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