ToolStrip StatusLabel DoubleClick事件不会提升

时间:2016-10-05 08:45:09

标签: c# winforms events toolstrip

我在为动态创建的DoubleClick订阅ToolStripStatusLabel事件时遇到问题。

在我的代码中,我在ToolStripStatusLabel内创建了一系列StatusStrip项,并订阅了它的DoubleClick事件,但它似乎永远不会上升

private void InitStatusBar()
{
    foreach (CardReader cardReader in appConfig.CardReadersList)
    {
        System.Windows.Forms.ToolStripStatusLabel cardReaderStatusLabel = new ToolStripStatusLabel();
        cardReaderStatusLabel.Name = cardReader.Description;
        cardReaderStatusLabel.Tag = cardReader;
        cardReaderStatusLabel.Text = cardReader.Description.ToUpper();
        cardReaderStatusLabel.Image = cardReader.DeviceInfo.GetIconImage();
        cardReaderStatusLabel.DoubleClick += new System.EventHandler(this.cardReaderStatusLabel_DoubleClick);
        this.statusStripBottom.Items.Add(cardReaderStatusLabel);
        this.statusStripBottom.Refresh();
    }
}

private void cardReaderStatusLabel_DoubleClick(object sender, EventArgs e)
{
    ToolStripStatusLabel clickedToolStripLabel = (ToolStripStatusLabel)sender;
    CardReader taggedCardReader = (CardReader)clickedToolStripLabel.Tag;
    MessageBox.Show("Lector: " + taggedCardReader.Description + Environment.NewLine + "Status: " + taggedCardReader.DeviceInfo.CardReaderStatusString);

}

StatusStrip已正确初始化(状态标签已添加并显示在状态栏中)但当我双击它们时,没有任何反应:(

我有什么遗失的吗?

谢谢:)

1 个答案:

答案 0 :(得分:5)

您应该将这些项目的DoubleClickEnabled属性设置为true,然后您就可以为DoubleClick处理ToolStripItem个事件。

ToolStripItem在其自己的内部方法HanldeMouseUp中处理双击。在该方法中,它检查DoubleClickEnabled属性,并根据鼠标向上和最后一次点击之间的刻度,确定是否应该引发双击事件。