C#在WinForm自定义控件中如何定义TextChange事件?

C#在WinForm自定义控件中如何定义TextChange事件?,第1张

使用委托+事件来实现

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 = ""//清空便于对比

        }

    }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11961823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存