如
public delegate void TextChangeHandler(object sender, EventArgs e)
public event TextChangeHandler TextChanged
然后在你需要触发的事件中,检查
TextChanged是否为null,不为null的话直接执行TextChanged就行了。。。
如果你硬要在设置属性中执行事件
public string kk
{
get
{
//如果旧值 != 新值,触发事件
if (TextChanged != null)
{
TextChanged(null,EventArgs.Empty)
}
}
}
一般web的自定义控件触发TextChanged都在postdata数据回传的时候...
你要明白,你想在get中写个方法,则该方法只能作用于你这个控件的内部成员。。。。
测试了一下,可以使用自定义事件。
public partial class Form1 : Form{
//定义事件
public event EventHandler HScrollEvent
public event EventHandler VScrollEvent
public Form1()
{
InitializeComponent()
//注册事件
this.VScrollEvent += delegate
{
{ this.Text = "纵向滚动了!" }
}
}
protected override void WndProc(ref Message m)
{
//在输出窗口自己看对应的数字是多少
Debug.Print(m.Msg.ToString())
switch (m.Msg.ToString())
{
case "528"://我测试对应垂直滚动
//引发事件
if (this.VScrollEvent != null)
this.VScrollEvent(this, null)
break
case "你自己检测数字":
if (this.HScrollEvent != null)
this.HScrollEvent(this, null)
break
default:
break
}
base.WndProc(ref m)
}
private void button1_Click(object sender, EventArgs e)
{
this.Text = ""//清空便于对比
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)