做了一个自定义控件,想根据控件的属性设置一些属性
现在的问题是,我要在这个控件的属性被设置后,我需要根据这些属性,进行一些设置刚开始写在了控件的构造方法了,可是构造方法执行时,控件的属性还没有从designer里读取现在想找个合适的事件写进去,说以想问下什么事件执行后控件的属性被设置?
然后还会激发那些事件,这样可以事件中做我的设置了。
现在的问题是,我要在这个控件的属性被设置后,我需要根据这些属性,进行一些设置刚开始写在了控件的构造方法了,可是构造方法执行时,控件的属性还没有从designer里读取现在想找个合适的事件写进去,说以想问下什么事件执行后控件的属性被设置?
然后还会激发那些事件,这样可以事件中做我的设置了。
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
MyTexBox myTextBox = new MyTexBox();
this.Controls.Add(myTextBox);
myTextBox.MyTextChanged += new MyTexBox.MyTextChangedHandler(MyTextChanged);
myTextBox.MyText = "sfsf";
} private void MyTextChanged(string strText)
{
MessageBox.Show(strText);
}
} public class MyTexBox : TextBox
{
public delegate void MyTextChangedHandler(string strText);
public event MyTextChangedHandler MyTextChanged; private string _MyText;
public string MyText
{ get { return _MyText; }
set
{
_MyText = value;
if (MyTextChanged != null)
{
MyTextChanged(_MyText);
}
}
}
}
}
这是有“模式”的。典型的代表,叫做 INotifyPropertyChanged。自己google一下。程序员如果不知道,那么肯定没有经过正规.net技术原理方面的培训。
http://msdn.microsoft.com/zh-cn/library/system.componentmodel.inotifypropertychanged.aspx其实不仅仅是“向客户端”,控件自己也需要监听自己的属性改变,这样编程就更简练,因为你可以在初始化方法中一次性地、集中地注册事件方法,而不需要分不到每一个属性的set方法中去写业务处理代码。
{
//做的事情
}
不知道有这个事件没