自定义控件之事件委托署理
自定义控件之事件委托代理
开发了个自定义控件,自定义控件上有一LABEL
private void labFYID_MouseHover(object sender, EventArgs e)
{
labFYID.BorderStyle = BorderStyle.FixedSingle;
this.MouseHover(sender, e);//此句不正确,如何转移或代理触发自定义控件的MouseHover
}
就是在软件调试中,LABFYID 标签也能遵守 自定义控件的 MouseHover 事件
,现在问题是在软件调试中,鼠标放LABFYID标签上,只能触发LABFYID的事件,不能触发自定义的事件。
望各位大虾指正。
------解决方案--------------------
自定义控件
我试了可以,你看看可以吗
开发了个自定义控件,自定义控件上有一LABEL
private void labFYID_MouseHover(object sender, EventArgs e)
{
labFYID.BorderStyle = BorderStyle.FixedSingle;
this.MouseHover(sender, e);//此句不正确,如何转移或代理触发自定义控件的MouseHover
}
就是在软件调试中,LABFYID 标签也能遵守 自定义控件的 MouseHover 事件
,现在问题是在软件调试中,鼠标放LABFYID标签上,只能触发LABFYID的事件,不能触发自定义的事件。
望各位大虾指正。
------解决方案--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 自定义控件事件传递
{
public partial class labFYID : UserControl
{
//自定义一个事件
public event EventHandler myhandler;
public labFYID()
{
InitializeComponent();
this.MouseHover += new EventHandler(UcSecond_MouseHover);
}
void UcSecond_MouseHover(object sender, EventArgs e)
{
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.BackColor = Color.Blue;
if (myhandler !=null )
myhandler (this,e );
}
}
}
自定义控件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 自定义控件事件传递
{
public partial class UcParent : UserControl
{
public UcParent()
{
InitializeComponent();
//先手动放置控件方法
//labFYID1.myhandler += new EventHandler(labFYID1_myhandler);
}
void labFYID1_myhandler(object sender, EventArgs e)
{
//this.BackColor = Color.Red;
//this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
}
private void UcMain_Load(object sender, EventArgs e)
{
//动态加载控件方法
labFYID mylab = new labFYID();
mylab.myhandler += new EventHandler(mylab_myhandler);
this.Controls.Add(mylab);
mylab.Show();
}
void mylab_myhandler(object sender, EventArgs e)
{
this.BackColor = Color.Red;
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
}
}
}
我试了可以,你看看可以吗