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

那部分很容易。

this.tsmiDelete.DropDownItems.Add("The text on the item.");

但是,我还需要连接事件,以便当用户单击该项目时实际会发生一些事情!

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

有帮助吗?

解决方案

不能直接订阅Click事件吗?像这样的东西:

ToolStripButton btn = new ToolStripButton("The text on the item.");
this.tsmiDelete.DropDownItems.Add(btn);
btn.Click += new EventHandler(OnBtnClicked);

OnBtnClicked 将这样声明:

private void OnBtnClicked(object sender, EventArgs e)
{
    ToolStripButton btn = sender as ToolStripButton;

    // handle the button click
}

发送者应该是 ToolStripButton,因此您可以投射它并用它执行任何您需要执行的操作。

其他提示

感谢您对安迪的帮助。我现在唯一的问题是 AutoSize 不适用于我添加的 ToolStripButtons!他们都太狭窄了。

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


更新:以编程方式创建的 ToolStripButton 的 AutoSize 肯定有问题。不过,我找到了解决办法:

  1. 创建 ToolStripButton。
  2. 创建一个标签控件并设置字体属性以匹配您的按钮。
  3. 设置标签文本以匹配您的按钮。
  4. 将标签设置为“自动调整大小”。
  5. 读取标签的宽度并使用它来设置 ToolStripButton 的宽度。

这很hacky,但是很有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top