我有一个自定义控件(自定义 ComboBox)。它运行良好,当我按下“箭头按钮”时它会部署,如果我再次按下它它也会部署,但是如果它已部署并且我按下我表单中的任何地方 - 它会关闭但是当我试图打开时它 - 我必须按“箭头按钮”两次。因此,当我在组合框外单击时,我需要检测这一时刻。
打开ComboBox的代码(在ButtonClick中调用)
private void OpenComboBox()
{
if (drop_flag)
{
...
popup.Show(this);
}
else
{
drop_flag = true;
}
}
并关闭事件
private void popup_Closed(object sender, ToolStripDropDownClosedEventArgs e)
{
drop_flag = false;
}
所以,我想要这样的东西
private ClickedOutsideControl()
{
dropflag = true;
}
最佳答案
那没那么容易。使用基本的 .net,您总是需要某种控件/引用来通过绑定(bind)点击事件来拦截点击。例如,如果您有一个 MDI 父级(主窗口,您可以拦截它的点击)。
另一种方法(使用 windows api)是 Hook inso 系统事件 请参阅以下 stackoverflow 帖子 Global mouse event handler .
但如果你真的需要这个,你应该三思而后行。
关于c# - 如何在C#中检测winform控件外的鼠标点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20840837/