public event MouseEventHandler MouseDown;
private void label1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.MouseDown(sender,e);
}
引用此自定义控件的程序里:
private void myCtl_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
MyCtl TargetMyCtl = (MyCtl)sender;
StartPoint = new Point(e.X,e.Y);
textBox1.Text = TargetMyCtl.我的自定义属性 + " " + "Clicked";
}
引用控件的程序如果鼠标在控件的空白处点击鼠标时没有问题,可如果在控件中的label范围内点击,送出的sender不是自定义控件本身,而是label,产生不能转换为MyCtl对象的错误。
这段代码应该怎样写?如果自定义控件中有GroupBox之类不存在MouseDown、MouseMove事件的控件该怎么办?MouseDown的时间参数e有X、Y属性,我希望在内部控件中MouseDown、MouseMove之后,外部引用的程序收到的是相对于自定义控件左上角的XY坐标。
写了很多,各位能看懂吗?请指点!谢谢!
8 个解决方案
#1
真的这么难吗?不会不可能吧?
#2
private void label1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.MouseDown( this ,e);
}
{
this.MouseDown( this ,e);
}
#3
谢谢解答!
我有试过this.MouseDown( this ,e)的,不行。
我有试过this.MouseDown( this ,e)的,不行。
#4
啊~~~~~~~~~~~~~~~~~~~
大哥,你想干什么?
直接继承ctrl CLASS 不就可以了吗!
大哥,你想干什么?
直接继承ctrl CLASS 不就可以了吗!
#5
谢谢 lkal4587(刘侃 LuxuRy Lab) 参与解答。你是说自定义控件的类写成:
public class MyControl : System.Windows.Forms.UserControl
吗?
当然是这样写的。
不过如果这个自定义控件中有一个label的话,在引用这个控件的工程中,鼠标在label范围内电击的话,不能激活自定义控件自身的MouseDown!你可以试验一下。
public class MyControl : System.Windows.Forms.UserControl
吗?
当然是这样写的。
不过如果这个自定义控件中有一个label的话,在引用这个控件的工程中,鼠标在label范围内电击的话,不能激活自定义控件自身的MouseDown!你可以试验一下。
#6
哪位还有办法吗?
#7
啊~~~~~~~~~~~~~~~
看看MSDN上关于“引发时间”的things !
看看MSDN上关于“引发时间”的things !
#8
再加50分。那位能帮我贴出代码?200分相送!决不失言!
#1
真的这么难吗?不会不可能吧?
#2
private void label1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.MouseDown( this ,e);
}
{
this.MouseDown( this ,e);
}
#3
谢谢解答!
我有试过this.MouseDown( this ,e)的,不行。
我有试过this.MouseDown( this ,e)的,不行。
#4
啊~~~~~~~~~~~~~~~~~~~
大哥,你想干什么?
直接继承ctrl CLASS 不就可以了吗!
大哥,你想干什么?
直接继承ctrl CLASS 不就可以了吗!
#5
谢谢 lkal4587(刘侃 LuxuRy Lab) 参与解答。你是说自定义控件的类写成:
public class MyControl : System.Windows.Forms.UserControl
吗?
当然是这样写的。
不过如果这个自定义控件中有一个label的话,在引用这个控件的工程中,鼠标在label范围内电击的话,不能激活自定义控件自身的MouseDown!你可以试验一下。
public class MyControl : System.Windows.Forms.UserControl
吗?
当然是这样写的。
不过如果这个自定义控件中有一个label的话,在引用这个控件的工程中,鼠标在label范围内电击的话,不能激活自定义控件自身的MouseDown!你可以试验一下。
#6
哪位还有办法吗?
#7
啊~~~~~~~~~~~~~~~
看看MSDN上关于“引发时间”的things !
看看MSDN上关于“引发时间”的things !
#8
再加50分。那位能帮我贴出代码?200分相送!决不失言!