c# - 动态处理 UserControl 事件

标签 c# .net user-controls mouseevent

最初我有一个图片框,用户可以在表单上将其从一个地方移动到另一个地方。 我已经处理了图片框的事件并且它移动得很完美。

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

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

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

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

如有错误请指正,并提供解决方案。

最佳答案

好吧,MouseDownMouseUp 等鼠标事件仅在鼠标在特定控件上执行操作时才会发生。我能给你的最好的办法是捕获控件中的每个鼠标事件并调用 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
  }

关于c# - 动态处理 UserControl 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18712428/

相关文章:

c# - 什么是IndexOutOfRangeException/ArgumentOutOfRangeException,如何解决?

wpf - 何时使用自定义用户控件

c# - 根据点击事件渲染局部 View

c# - 基本线程问题

c# - 对 ConcurrentDictionary 值的 linq 查询是否线程安全?

.net - WPF 图形布局组件

ASP.NET - 服务器控制输出缓存

c# - 将用户控件添加到 aspx 页面

c# - 如何在 Windows 8 Metro App 中使用 StreamSocketListener 和 StreamSocket 而不是 System.Net.Sockets?

c# - 我如何告诉 Resharper 我的 IEnumerable 方法删除了空值?