C# menu update command

22 отговора 0 прегледа
#1

C# menu update command

Имам малка питанка!

В MFC има едно нещо Event Handler и по-специялно един дет се вика за да update-не менютата на прозореца. Oт един час си блъскам главата и не мога да разбера какъв е .NET C# вариянта на този update event handler. Кажете как се прави в C# менютата и toolbar-а сами да си update-ват item-ите?

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #2

Re: C# menu update command

Ни 'нам - пробвай нещо там и кажи дали е станало!

Отговор
в отговор на lud! #3

Re: C# menu update command

Аз ако знаех нямаше да питам :)

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #4

Re: C# menu update command

google.com
msdn.com

Отговор
в отговор на ThunderFuck #5

Re: C# menu update command

google.com
msdn.com

търсих ма явно не съм търсил правилното нещо

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #6

Re: C# menu update command

Какво точно искаш да кажеш със "менютата сами да си update-ват item-ите"? Кое искаш да се промени на item-ите - текста или може би checked/unchecked състоянието?


Отговор
в отговор на naki #7

Re: C# menu update command

ето пример:
Искам когато селектирам item от един ListView дадено меню да се активира (myMenu_ToolStripMenuItem.Enabled == true) а когато няма селектиран item (myMenu_ToolStripMenuItem.Enabled == false).
На toolbar имам иконка (бутон) който също трябва да се активира/деактивира като менюто.

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #8

Re: C# menu update command

в C# също има events, event handlers, delegates....какво още ти трябва?

Отговор
в отговор на Stone #9

еее гуита не си ли писал

човека явно се интересува от еквивалент на ON_UPDATE_COMMAND_UI.




NE SUTOR ULTRA CREPIDAM
Отговор
в отговор на zaphod #10

Re: еее гуита не си ли писал

Писал съм доста GUI-та. За пръв път чувам за такова нещо.
(НЕ СЪМ ползвал MFC, а VB6/C ++ Builder 5 & 6/VB 2005.)


Редактирано от naki на

Отговор
в отговор на ebliviq_zaek #11

Re: C# menu update command

Ами много просто. Във OnChange (или нещо сходно) събитието на ListView-тo добавяш код, който enable-ва или disable-ва менюто и toolbar бутона. Поне във не-MFC програми така съм го правил.


Редактирано от naki на

Отговор
в отговор на naki #12

Re: еее гуита не си ли писал

ами да, точно за ON_UPDATE_COMMAND_UI питам

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #13

Re: еее гуита не си ли писал

А това за OnChange (или нещо сходно) събитието на ListView-тo ми мина през акала ама нещо не ми хареса мноо като идея. MFC метода ми се струва малко по-добър.

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #14

Re: еее гуита не си ли писал

Ами не знам, според мене е ОК... Точното име на събитието е SelectedIndexChanged. Ето и пример:


private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count == 0)
{
mnuMyMenuItem.Enabled = false;
}
else
{
mnuMyMenuItem.Enabled = true;
}


}



Отговор
в отговор на naki #15

Re: C# menu update command

е да, ама човек като е вкусил от ON_UPDATE_COMMAND_UI и това което предлагаш изглежда дървено. метода за който говорим е много хубаво измислен, но за съжаление не е функция на виндовса, а само на мфц. то мфц не е от най-великите творения в областта на гуитата, обаче специално за това нещо заслужават пчеличка.

Отговор
в отговор на zaphod #16

Re: C# menu update command

Ами както и си мислех - в C# няма ON_UPDATE_COMMAND_UI .

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на ebliviq_zaek #17

Re: C# menu update command

ON_UPDATE_COMMAND_UI е само макрос , който асоциира към message map-а на класа ти update функциика; тази функция се вика когато системата ти праща WM_IDLE ( т.е. като няма други съобшения )( за това когато предефинираш OnIdle() на някой мфц клас не трябва да забравяш да извикаш метода на базовия клас, защото иначе някъде нещо няма да ти се update-не
)
твоята update функция се вика "автомагически" когато application-a ти е в idle режим;

may the source be with you...
Отговор
в отговор на ak_47 #18

Re: C# menu update command

не съм го чоплил много, но май не се вика в onidle, понеже така ще плюска много процесор. мисля че се вика по разни входни събития - мишка, клавиатура, таймер. ако пуснеш нишка която мени условието за разрешаване на бутон, няма да се усети.




NE SUTOR ULTRA CREPIDAM
Отговор
в отговор на zaphod #19

Re: C# menu update command

Ми знам, че работи по този или подобен начин. Аз сега се мъча да уча C# и затова първо гледам да намеря приликите между C# и MFC.

"Добрите програмисти знаят какво да пишат. Великите знаят какво да пренапишат"
Отговор
в отговор на zaphod #20

Re: C# menu update command

Всъщност и аз не съм гледал много, но като се поразрових малко , при idle се сендва WM_IDLEUPDATECMDUI на главния прозорец и на неговите "наследници", т.е. тогава се викат OnUpdate... функциите, и съответно другото място е при показване на UI елемент( меню-та, туулбарове, ит.н.) - преди да се покаже;

may the source be with you...
Отговор