ToolsStripDropDownButton doesn't respond to PerformClick

本文关键字:respond to PerformClick doesn ToolsStripDropDownButton | 更新日期: 2023-09-27 18:16:33

我在我的Windows窗体应用程序中添加了一个System.Windows.Forms.ToolStripDropDownButton,现在我试图添加一个键盘快捷键来点击这个按钮

然而,当我调用button.PerformClick()时,它根本不打开:

void _Cnc_KeyPress(object sender, KeyPressEventArgs ){
    btnFiltros.PerformClick();
}

这是故意的吗?是否有其他方法来模拟点击或正确打开下拉菜单?

编辑

我这样做的原因是我有一个工作的应用程序将在一个无鼠标的设备上使用,所以我必须让整个导航从键盘

ToolsStripDropDownButton doesn't respond to PerformClick

您的表单是否设置了KeyPreview属性?你需要它来接收所有的键事件。

当此属性设置为true时,表单将接收所有KeyPress, KeyDown和KeyUp事件。在表单的事件处理程序完成对击键的处理之后,将击键分配给具有焦点的控件。

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx

形式

对于toolstripdropdownbutton,您必须首先选择下拉项。下面的代码片段展示了如何做到这一点。

// This method shows the drop-down for the first item 
// in the form's ToolStrip. 
private void showButton_Click(object sender, EventArgs e)
{
    ToolStripDropDownItem item = this.toolStrip1.Items[0] as ToolStripDropDownItem;
    if (item.HasDropDownItems)
    {
        item.ShowDropDown();
    }
}