C# MenuItem to ListBoxItem (как?)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Natali Osina, 3 Jul 2011.

  1. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    Всем привет.
    Нашла довольно таки неплохую информацию о использовании рефлексии.
    собственно сам пример тут
    http://www.cyberguru.ru/dotnet/reflection/dotnet-reflection.html
    так вот.
    для каждого плагина создается подпункт меню.
    естественно передается name и handler

    PHP:
    foreach (string name in plugins.Keys)
        {
            
    MenuItem item = new MenuItem(namehandler);
            
    menuItemPlugins.MenuItems.Add(item);
        }
    это хорошо когда нужно создавать пункты меню и т.д.
    Вот я попробовала изменить эту программку так, что бы доступные плагины выводились в листбокс и по выбору из листбокса делать соответствующее действие.

    но как оказалось передать имя можно довольно просто
    PHP:
    foreach (string name in plugins.Keys)
                {
                    
    listBox1.Items.Add(name);
                }
    а вот код
    PHP:
    foreach (string name in plugins.Keys)
                {
                    
    listBox1.Items.Add(name,handler);
                }
    уже не будет рабочий.
    так как передавать два параметра нельзя, а по аналогии создать вместо
    MenuItem item = new MenuItem(name, handler);
    что то типа
    ListBox item = new ListBox(name, handler);
    либо нельзя либо у меня не получается....

    думаю еще нужно изменить метод
    PHP:
    private void OnPluginClick(object senderEventArgs args)
    {
        Interface.
    IPlugin plugin = (Interface.IPlugin)plugins[((MenuItem)sender).Text];
        
    plugin.Transform(this);
    }
    подскажите пожалуйста как это все организовать. что нужно использовать и т.д.
    ведь не всегда же нужно создавать меню, а использование разных листбоксов, чекедлистбоксов и т.д. сюда подогнать у меня не получается.
    Спасибо большое за советы. :)
     
  2. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    в добавок вот нашла подробно...
    1) для MenuItem
    http://msdn.microsoft.com/ru-ru/library/system.windows.forms.menuitem.aspx
    есть конструктор класса
    MenuItem(String, EventHandler)
    Инициализирует новый экземпляр класса с заданной надписью и обработчиком для события Click данного элемента меню.

    2) для ListBoxItem
    http://msdn.microsoft.com/ru-ru/library/system.windows.controls.listboxitem.aspx
    подобного конструктора нету....
     
  3. Natali Osina

    Natali Osina New Member

    Joined:
    15 Jun 2011
    Messages:
    65
    Likes Received:
    3
    Reputations:
    0
    никто так и не понял в чём дело?..
     
  4. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    У ListBoxItem нет события Click. Зато есть событие Selected, и ему подобные.

    Можно обрабатывать выбор элемента на уровне ListBox с помощью события SelectedValueChanged.

    В общем, вариантов много, главное внимательно читать документацию.
     
    #4 X-rus, 4 Jul 2011
    Last edited: 4 Jul 2011