C# 获取通过键盘启动ContextMenuStrip的ToolStripItem
在WinForms中,只有ToolStrip可以具有ContextMenuStrip,而不是ToolStripItem 因为我需要ContextMenuStrip来知道用户指的是哪个按钮,所以当鼠标按下按钮时,我有一个解决方案(通过在ContextMenuStrip.Openning获取光标位置,然后从ToolStrip获取项目),但我没有键盘选择的解决方案。理论上,可以尝试捕获ToolStrip的OnKeyDown,并尝试跟踪用户操作选择的项目,但在实践中,如果ToolStrip溢出,它可能会变得非常复杂,并且可能不可靠 有什么解决办法吗 解决方案:C# 获取通过键盘启动ContextMenuStrip的ToolStripItem,c#,.net,winforms,C#,.net,Winforms,在WinForms中,只有ToolStrip可以具有ContextMenuStrip,而不是ToolStripItem 因为我需要ContextMenuStrip来知道用户指的是哪个按钮,所以当鼠标按下按钮时,我有一个解决方案(通过在ContextMenuStrip.Openning获取光标位置,然后从ToolStrip获取项目),但我没有键盘选择的解决方案。理论上,可以尝试捕获ToolStrip的OnKeyDown,并尝试跟踪用户操作选择的项目,但在实践中,如果ToolStrip溢出,它可能会
我在ContextMenuStrip中玩了一点,下面是解决方案。打开处理程序执行以下操作:
toolStrip.Items.Cast().Where(x=>x.Selected)。First()
获取在按下键显示ContextMenuStrip时选择的项。我在ContextMenuStrip中播放了一些,下面是解决方案。打开处理程序执行以下操作:toolStrip.Items.Cast().Where(x=>x.Selected)。First()
获取在按键显示ContextMenuStrip时选择的项目。呃,您希望用户按哪个键?用键盘无法聚焦toolstrip项。没有人会用鼠标选择一个项目,然后按一个键。如果ToolStrip有焦点,您可以使用箭头键(根据属性和Tab键),它将更改选定的ToolStripItem。您甚至可以按Enter键,它将激活Click事件。如果您按下ContextMenu键,它将激活ContextMenu。这不是问题。问题是之前选择了哪个ToolStripItem嗯,我一点也不重复,不能给ToolStrip焦点。如果你想得到答案,在文件共享服务上发布一个这样的小复制项目是明智的。我已经解决了这个问题并在上面发布了,我不知道为什么它对你不起作用,你在ToolStrip上有ToolStripItems吗?您使用过ToolStrip.Focus()方法吗?是的,按钮。发布一个答案,然后接受它,这样它就会被保留下来。