相关疑难解决方法(0)

处理表单上的所有控件的单击

我有一个.NET UserControl(FFX 3.5).此控件包含几个子控件 - 一个Panel,一对标签,一对TextBox,以及另一个自定义控件.我想在基本Control上的任何地方处理右键单击 - 所以右键单击任何子控件(如果是Panel,则为子项的子项).我想这样做,以便在有人对Control进行更改时可以维护,而不必为新控件连接处理程序.

首先我尝试覆盖WndProc,但正如我所怀疑的,我只是直接获取表单上的点击消息,而不是任何子节点.作为半黑客,我在InitializeComponent之后添加了以下内容:

  foreach (Control c in this.Controls)
  {
    c.MouseClick += new MouseEventHandler(
      delegate(object sender, MouseEventArgs e)
      {
        // handle the click here
      });
  }
Run Code Online (Sandbox Code Playgroud)

现在,这会获得支持该事件的控件的点击次数,但是,例如,标签仍然没有得到任何结果.有一种简单的方法可以做到这一点,我忽略了吗?

c# events winforms

9
推荐指数
1
解决办法
1万
查看次数

Winforms:首先在主窗体上拦截鼠标事件,而不是在控件上

肯定有一种方便的方法:

我已经在我的主窗体上实现了鼠标拖动行为的"移动窗口",
我希望鼠标单击/移动事件被表单拦截,而不是由其中的控件拦截.

我想找到一个等效/复制鼠标事件的"KeyPreview"属性

此外,我想避免在12个控件的鼠标事件中单独将鼠标事件重定向到主窗体方法12次(这是我到目前为止找到的丑陋的解决方法)

有任何想法吗 ?

c# winforms

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×2

winforms ×2

events ×1