【问题标题】:How do I programmatically wire up ToolStripButton events in C#?如何在 C# 中以编程方式连接 ToolStripButton 事件?
【发布时间】:2008-09-17 16:03:39
【问题描述】:

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

这部分很简单。

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

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

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

【问题讨论】:

    标签: c# events toolstripbutton toolstripitem


    【解决方案1】:

    您不能只订阅 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,因此您可以投射它并使用它做任何您需要做的事情。

    【讨论】:

      【解决方案2】:

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

      这很奇怪,因为它之前工作过。


      更新:对于以编程方式创建的 ToolStripButtons,AutoSize 肯定有问题。但是,我找到了解决方案:

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

      这很hacky,但它可以工作。

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 1970-01-01
        • 2019-11-13
        • 2014-05-29
        • 2011-10-27
        • 2012-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多