2014-02-09 12 views
0

Я ухожу, когда дело доходит до C#, так что несите меня.Использование обработчика для открытия формы

Я создаю меню во время выполнения. Он может идти от одного до N вариантов, и каждый из них имеет функцию обратного вызова (показывающую форму или вызов другой процедуры). У меня есть это приложение в VB, но я делаю это снова, используя C# (-learn something new-). Там я использую MethodInvoker и AddressOf.

Шаги:

Добавить новый пункт меню

mg.AddItem("Users", UserForm.ShowList); 

Затем добавьте его обратный

... 
newMenuOption.Click += option_click; 
menu.Items.Add(newMenuOption); 

О методе option_click Я призываю обратный вызов элемента, что он хранится.

Invoke((Item)sender).Tag).m_MenuCallback); 

Я покончил с этим.

Первый mg.AddItem дает ошибку, если UserForm.ShowList не является статичным. (Если это так, это работает, но я не могу ничего сделать, кроме показа MessageBox и т. Д.).

Я попытался с MethodInvoker, EventArgs, объект ...

Мой сценарий заполнения Panorama (контроль Telerik) с Плитки (Пункт меню) во время выполнения (они меняются в зависимости пользователь вошел в систему). Поэтому каждый Плитка открывает новую форму или выполняет различную задачу. Я получил этот (не точный пример) работу над VB, но C# мне тяжело.

PS:

UserForm.ShowList заполнит сетку с пользователями и показать форму. Невозможно сделать это, пока ShowList является статическим методом.

Извините за мой английский.

+1

Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

0

Вам необходимо сделать экземпляр вашего UserForm (С помощью Visual Basic вы можете получить доступ к экземпляру по умолчанию для формы, это было оставлено для целей совместимости VB6).

UserForm usf = new UserForm(); 

затем добавить его как

mg.AddItem("Users", usf.ShowList); 
+0

Спасибо. Я ценю вашу помощь. – Jaxedin

Смежные вопросы