我在 c# windows 程序中以编程方式创建一个图片框。我为它分配了 Tag 属性的值。我想以编程方式打印出该标签号,仅用于测试目的。所以我试试这个:
private void Form1_Load(object sender, EventArgs e)
{
pic.ContextMenuStrip = contextMenuStrip1;
pic.ContextMenuStrip.Click += new EventHandler(this.MyPicHandler);
}
void MyPicHandler(object sender, EventArgs e)
{
PictureBox pic = sender as PictureBox;
MessageBox.Show(pic.Tag.ToString());
}
但是当我右键单击图片,然后单击菜单项时,出现异常。 “未处理 NullReferenceException”“未将对象引用设置为对象的实例。”。有人知道发生了什么事吗?
最佳答案
线
PictureBox pic = sender as PictureBox;
将 pic 设置为 null,因为这是 ContextMenuStrip
的事件处理程序,而不是 PictureBox
的事件处理程序。
sender
参数是对您添加事件处理程序的对象的引用 - 即 ContextMenuStrip
。
关于c# - 以编程方式调用 WinForms contextmenustrip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527804/