我正在慢慢獲得C#
的掛起,並且此問題可能是由於糟糕的設計造成的,但這裏有。如何從事件處理程序中更改ContextMenuItem的屬性
我已經被正是如此生成的動態菜單:
public Form1()
{
InitializeComponent();
AddContextMenu();
}
public void AddContextMenu()
{
ContextMenuStrip mnuContextMenu = new ContextMenuStrip();
mnuContextMenu.ItemClicked+=
new ToolStripItemClickedEventHandler(mnuContextMenu_ItemClicked);
this.ContextMenuStrip = mnuContextMenu;
ToolStripMenuItem mnuItemEnable = new ToolStripMenuItem("Enable");
mnuContextMenu.Items.Add(mnuItemEnable);
}
和事件處理程序:
private void mnuContextMenu_ItemClicked (Object sender,
ToolStripItemClickedEventArgs e)
{
//do stuff here
}
如何從事件處理程序內部mnuContextMenu.Text
(或任何其他財產)的變化? VS說:
mnuContextMenu不在 當前上下文
謝謝。仍然瞭解所有這些演員如何工作。 – csharpidiot 2011-06-15 15:24:59
@csharp:說實話,這實在是一種反常現象。大多數時候,你不應該做非常多的演員。 [泛型](http://msdn.microsoft.com/en-us/library/ms379564.aspx)被引入到C#(以及更一般的.NET框架)的某些版本中,並且它們提供了更好的解決方案問題四處。問題在於事件處理程序簽名是在第一版的基礎上發明的,在泛型存在之前。所以這是您實際上必須定期演出的少數幾個地方之一。 – 2011-06-15 15:26:58