Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中以编程方式连接ToolStripButton事件?_C#_Events_Toolstripbutton_Toolstripitem - Fatal编程技术网

如何在C#中以编程方式连接ToolStripButton事件?

如何在C#中以编程方式连接ToolStripButton事件?,c#,events,toolstripbutton,toolstripitem,C#,Events,Toolstripbutton,Toolstripitem,我正在以编程方式将ToolStripButton项添加到上下文菜单中 那部分很简单 this.tsmiDelete.DropDownItems.Add("The text on the item."); 但是,我还需要连接事件,以便当用户单击该项目时,实际会发生一些事情 我该怎么做?处理单击的方法还需要接收与用户单击的特定ToolStripButton相关的某种id或对象。您不能订阅单击事件吗?大概是这样的: ToolStripButton btn = new ToolStripButton(

我正在以编程方式将ToolStripButton项添加到上下文菜单中

那部分很简单

this.tsmiDelete.DropDownItems.Add("The text on the item.");
但是,我还需要连接事件,以便当用户单击该项目时,实际会发生一些事情


我该怎么做?处理单击的方法还需要接收与用户单击的特定ToolStripButton相关的某种id或对象。

您不能订阅单击事件吗?大概是这样的:

ToolStripButton btn = new ToolStripButton("The text on the item.");
this.tsmiDelete.DropDownItems.Add(btn);
btn.Click += new EventHandler(OnBtnClicked);
private void OnBtnClicked(object sender, EventArgs e)
{
    ToolStripButton btn = sender as ToolStripButton;

    // handle the button click
}
而OnBtnClicked的声明如下:

ToolStripButton btn = new ToolStripButton("The text on the item.");
this.tsmiDelete.DropDownItems.Add(btn);
btn.Click += new EventHandler(OnBtnClicked);
private void OnBtnClicked(object sender, EventArgs e)
{
    ToolStripButton btn = sender as ToolStripButton;

    // handle the button click
}

发送者应该是ToolStripButton,这样你就可以使用它,做任何你需要做的事情。

谢谢你的帮助。我现在唯一的问题是,AutoSize在我添加的ToolStripButtons上不起作用!它们都太窄了

这很奇怪,因为它很早就开始工作了


更新:以编程方式创建的ToolStripButtons的AutoSize肯定有问题。然而,我找到了一个解决方案:

  • 创建ToolStripButton
  • 创建标签控件并将字体属性设置为与按钮匹配
  • 将标签的文本设置为与按钮匹配
  • 将标签设置为自动调整大小
  • 读取标签的宽度,并使用该宽度设置ToolStripButton的宽度
  • 它很粗糙,但很管用