Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态处理UserControl事件_C#_.net_User Controls_Mouseevent - Fatal编程技术网

C# 动态处理UserControl事件

C# 动态处理UserControl事件,c#,.net,user-controls,mouseevent,C#,.net,User Controls,Mouseevent,最初我有一个图片框,用户可以在表单上从一个地方移动到另一个地方。 我已经为图片盒处理了事件,它运行得非常完美 但现在用户希望在图片下方显示文本。所以我想动态创建一个自定义控件,并在用户控件中添加图片框和标签控件 我还将控件的dock属性设置为TOP和Bottom。现在,我的用户控件被子控件完全覆盖 之后,我想处理用户控件的鼠标事件。但不幸的是,这对我不起作用 根据我的理解,现在我无法访问用户控件,而是可以访问用户控件中的子控件,因此用户控件的鼠标事件不起作用 如果我错了,请纠正我,并提供任何解决

最初我有一个图片框,用户可以在表单上从一个地方移动到另一个地方。 我已经为图片盒处理了事件,它运行得非常完美

但现在用户希望在图片下方显示文本。所以我想动态创建一个自定义控件,并在用户控件中添加图片框和标签控件

我还将控件的dock属性设置为TOP和Bottom。现在,我的用户控件被子控件完全覆盖

之后,我想处理用户控件的鼠标事件。但不幸的是,这对我不起作用

根据我的理解,现在我无法访问用户控件,而是可以访问用户控件中的子控件,因此用户控件的鼠标事件不起作用


如果我错了,请纠正我,并提供任何解决方案。

好吧,像
MouseDown
MouseUp
这样的鼠标事件只有在鼠标在特定控件上执行操作时才会发生。我能给你的最好建议是捕捉控件中的每个鼠标事件,并在
userControl

  public UserControl1()
  {
     InitializeComponent();
     this.MouseDown += new MouseEventHandler(this.UserControl1_MouseDown);
     this.comboBox1.MouseDown += new MouseEventHandler(this.comboBox1_MouseDown);
  }

  private void UserControl1_MouseClick(object sender, MouseEventArgs e)
  {
      UCMouseDown();
  }

  private void UserControl1_MouseDown(object sender, MouseEventArgs e)
  {
      UCMouseDown();
  }

  private void comboBox1_MouseDown(object sender, MouseEventArgs e)
  {
      UCMouseDown();
  }

  private void UCMouseDown()
  {
      // Your code
  }

我必须重新计算坐标并相应地定位用户控件。但是如果我处理子控件的事件,我将得到相对于用户控件的坐标,而不是相对于窗体的坐标。在这种情况下,坐标将无法正确计算。嘿,这很有效。我应该自己试试。但是对于这个解决方案,我必须处理两个子控件的事件。如果我有超过10个控件怎么办?我期待着得到一个全球性的解决办法。@Lokesh有一个全球性的解决办法,但你不会喜欢的: