当前位置: 首页 > 编程语言 > C#

无法在ComboBox中检测到鼠标右键分享

时间:2023-04-11 00:37:29 C#

C#学习教程:无法在ComboBox中检测到鼠标右键我想在用户右键单击列表中的项目时打开一个新窗口,但我无法检测到右键单击。我的代码:privatevoidcmbCardList_MouseClick(objectsender,MouseEventArgse){if(e.Button==MouseButtons.Right&&cmbCardList.SelectedIndex!=-1){frmViewCardvc=newfrmViewCard();vc.updateCardDisplay(cmbCardList.SelectedItem);vc.Show();如果我改变e.Button==MouseButtons.Left整个事情工作正常。有什么办法可以让它按我的意愿工作吗?恐怕除非您进行一些认真的黑客攻击,否则这是不可能的。本文将进行说明。为您引用:独立控件以下控件不符合标准的鼠标单击事件行为:Button、CheckBox、ComboBox和RadioButton控件作为这个问题的墓志铭,您可以使用普通的.NET功能来完成这项工作;你只需要深入了解事件调用堆栈。不处理MouseClick事件,而是处理MouseDown事件。我最近不得不做类似的事情,我只是覆盖了OnMouseDown方法而不是附加处理程序。但是,处理程序也应该工作。下面是代码:如果(!cmsRightClickMenu.Visible)cmsRightClickMenu.Show(this,e.Location);否则cmsRightClickMenu.Hide();}base.OnMouseDown(e);}protectedoverridevoidOnMouseUp(MouseEventArgse){HandlingRightClick=false;base.OnMouseUp(e);}privateboolHandlingRightClick{得到;防止多次触发OnMouseDown逻辑;UI将发送多个MouseDown消息,这可能会干扰隐藏右键菜单。为防止这种情况,我只在第一个MouseDown触发器上执行一次逻辑(逻辑很简单,我不关心这两个调用是否竞争,但你可能会),然后忽略任何其他MouseDown触发器,直到发生MouseUp。它并不完美,但这将满足您的需求。您可以使用ContextMenuStrip的Opening事件来处理右键单击事件。以上是C#学习教程:鼠标右键共享的所有内容在ComboBox中都检测不到。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——varchk=newCheckBox();检查。上下文菜单条=cmsNone;privatevoidcmsNone_Opening(objectsender,CancelEventArgse){e.Cancel=true;varcms=(ContextMenuStrip)发件人;varchk=cms.SourceControl;//做你的东西}本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: