2011-06-17 10 views
0

私は動的に生成されたコンテキストメニューを持っています。 クリックするたびにすべての情報を再読み込みするにはどうすればよいですか?in c#contextMenuをどのように再生成しますか?

以下では、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

コンテキストメニュークラスの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); 
    } 
} 
+0

あなたは手の込んだことができるだろうか?メニューを生成するメソッドの外で登録しますか? (Form1()内)? – csharpidiot

+0

@csharpidiot:コンテキストメニューを開くイベントの使い方の例を使ってエントリを更新しました。 – Patrik

+0

ありがとう! しかし、私は手動でそれを(ほとんど)動作させていますが、これまでには更新されません。(これはデザイナーのイベントを購読することはできません。私はそれをクリックして2回目... しかし、私ははるかに近いです。 – csharpidiot

関連する問題