【问题标题】:how to create event on variable toolstrip menu item C#如何在变量工具条菜单项C#上创建事件
【发布时间】:2012-09-26 07:33:29
【问题描述】:

我已经编写了一些代码来在菜单项中显示每台已安装和在线的打印机。但是我不知道如何在单击菜单项时引发事件。我删除了获取打印机名称的代码,因为现在不相关了。

string printerName; // contains the first printer name, later contains 2nd printername. This is variable.

selectprinterNameMenuItem.DropDownItems.Add(printerName); // here do I add the new printer to the menu item.

通常您应该能够向菜单项添加事件;但我是通过代码创建的,我不知道确切的名称。如何检测菜单项何时被点击?

【问题讨论】:

  • 您在代码完成中看到了哪些听起来相关的事件,或者您可以在设计器中查看这些事件。这样,您就会知道它的名称以及如何使用它。
  • 您的意思是您不知道打印机的名称来分辨哪些被点击了?您可以将其存储在列表中(或者甚至只是将名称从控件中抢回)

标签: c# events toolstrip


【解决方案1】:

ToolStripItemCollectionAdd(String) 方法返回创建的ToolStripItem。您可以将事件处理程序添加到此对象:

string printerName; // contains the first printer name, later contains 2nd printername. This is variable.

ToolStripItem addedItem = selectprinterNameMenuItem.DropDownItems.Add(printerName); // here do I add the new printer to the menu item.
addedItem.Click += new EventHandler(printerName_Click); // here you register to the click event

编辑(根据您的评论):

您可以使用传递给事件处理程序的 sender 参数来告知已单击的打印机名称,即:

    void printerName_Click(object sender, EventArgs e)
    {
        ToolStripItem item = (ToolStripItem)sender;
        string printerClicked = item.Text;

        // whatever you want based on the printerName
    }

【讨论】:

  • 谢谢。这对我有点帮助。但是这样,您选择哪台打印机并不重要。所有人都会引发相同的事件,有没有简单的方法来防止这种情况?如果没有,我就写一些额外的代码来解决这个问题
【解决方案2】:

比勾上你的 selectprinterNameMenuItem 的 ItemClicked。

selectprinterNameMenuItem.DropDownItemClicked += new ToolStripItemClickedEventHandler(xyz);

找出导致事件触发的项目。

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多