2014-02-13 3 views
1

저는 winforms 응용 프로그램을 가지고 있는데,이를 달성하기 위해 바인드 된 객체가 변경되면 자동으로 Userinterface 자동 업데이트가 이루어집니다.엔티티가있는 UI 요소 바인딩

이것이 내가 시도했지만 불행히도 텍스트 상자 텍스트가 자동으로 변경되지 않습니다!

Employee employee = new Employee(); 

public Form1() 
{ 
    InitializeComponent(); 
    textBox1.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged; 
    textBox1.DataBindings.Add("Text", employee, "Name"); 
} 

class Employee 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    employee.Name = Guid.NewGuid().ToString(); 
} 
+0

그것은 당신이 윈폼에 대한 MVVM 프레임 워크를 찾고있는 것 같다 http://stackoverflow.com/questions/595469/ui-design-pattern-for-windows-forms-like-mvvm-for-wpf – Noseratio

+1

WPF로 전환하는 것이 WinForm을 사용하기에 충분하지 않은 것 같습니다. 진지하게. WinForm은 심각하게 결함이있는 기술입니다. – Aron

답변

0

button1_Click에 직원 이름을 설정 한 후, 당신은 textBox1 적용 할 ReadValue 메서드를 호출하여 textBox1 '텍스트 속성을 업데이트 할 수있는 바인딩 값을 재 읽기.

textBox1.DataBindings[0].ReadValue(); 

은 또는, 당신은 BindingSource에 따라 직원의 인스턴스를 휘게하고, button1_Click에 BindingSource에를 재설정 할 수있다.

Employee employee = new Employee(); 
BindingSource source; 

public Form1() 
{ 
    InitializeComponent(); 

    source = new BindingSource(); 
    source.DataSource = employee; 

    textBox1.DataBindings.Add("Text", source, "Name"); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    employee.Name = Guid.NewGuid().ToString(); 
    source.ResetCurrentItem(); 
}