1
데이터 바인딩을 가지고 놀고 있는데 아래 코드에서 폼을로드 할 때 바인딩 포맷이 두 번 호출된다는 것을 알았습니다. 테스트 클래스 TextBoxText 속성이 fist가 textbox1에 바인드되었을 때 한 번만 발생한다고 생각했습니다. 이게 정상인가? 그렇지 않다면, 그것을 막기 위해 무엇을 할 수 있습니까? 참고, button1을 눌러 테스트 클래스의 TextBoxText 속성을 변경하면 형식 이벤트가 예상대로 발생합니다.Binding Format 이벤트가 두 번 호출되는 이유는 무엇입니까?
public partial class Form1 : Form
{
Test _test = new Test();
public Form1()
{
InitializeComponent();
Binding binding = new Binding("Text", _test, "TextBoxText");
binding.Format += new ConvertEventHandler(Binding_Format);
this.textBox1.DataBindings.Add(binding);
}
private void Binding_Format(object sender, ConvertEventArgs e)
{
Debug.WriteLine("Format");
}
private void button1_Click(object sender, EventArgs e)
{
_test.TextBoxText = "test1";
}
}
class Test : INotifyPropertyChanged
{
private string _text;
public string TextBoxText
{
get { return _text; }
set
{
_text = value;
OnPropertyChanged(new PropertyChangedEventArgs("TextBoxText"));
}
}
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChanged(this, e);
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion