в C # как бы я восстановить контекстное меню? - PullRequest
0 голосов
/ 17 июня 2011

У меня динамически генерируется контекстное меню.Как мне перезагружать всю информацию в ней каждый раз, когда на нее нажимают?

в приведенном ниже массиве MyGlobals.ifparam часто изменяется.

if (MyGlobals.ifparams[0, 0] != null)
{
    ToolStripMenuItem mnuItemNet1 = new ToolStripMenuItem(MyGlobals.ifparams[0, 0]);
    mnuContextMenu.Items.Add(mnuItemNet1);
    mnuItemNet1.ToolTipText=MyGlobals.ifparams[0, 1];

    ToolStripMenuItem mnuDHCP1 = new ToolStripMenuItem("DHCP");
    ToolStripMenuItem mnuStatic1 = new ToolStripMenuItem("Static");
    if (MyGlobals.ifparams[0, 8] == "1") { mnuDHCP1.Checked = true; mnuStatic1.Checked = false; }
    else { mnuDHCP1.Checked = false; mnuStatic1.Checked = true; }    
    mnuItemNet1.DropDown = mnuContextMenu1;

    ToolStripMenuItem mnuIP1 = new ToolStripMenuItem();
    mnuIP1.Text = MyGlobals.ifparams[0, 3] + "/" + getCIDR(MyGlobals.ifparams[0, 4]);

    mnuContextMenu1.Items.Add(mnuDHCP1);
    mnuContextMenu1.Items.Add(mnuStatic1);
    mnuContextMenu1.Items.Add(mnuIP1);
}

Меня больше всего интересует mnuContextMenu1.

1 Ответ

1 голос
/ 17 июня 2011

Подписаться на событие Opening в классе контекстного меню.Здесь вы можете перестроить контекстное меню перед его отображением.

РЕДАКТИРОВАТЬ: Вот пример:

public partial class Form1 : Form
{
    public Form1()
    {
        this.InitializeComponent();

        // Subscribe to the opening event.
        // Example only: You should subscribe to the event in the designer.
        _contextMenu.Opening += new CancelEventHandler(OnContextMenuOpening);
    }

    private void OnContextMenuOpening(object sender, CancelEventArgs e)
    {           
        // Create a menu item.
        var item = new ToolStripMenuItem(DateTime.Now.ToString());
        item.Click += new EventHandler(OnItemClick);

        // Clear the content menu and add the item to it.
        _contextMenu.Items.Clear();
        _contextMenu.Items.Add(item);
    }

    private void OnItemClick(object sender, EventArgs e)
    {
        // Show the text of the item just for fun.
        MessageBox.Show(((ToolStripMenuItem)sender).Text);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...