2013-08-22 111 views
1

對不起,如果這已被問,但我找不到它。 我試圖將文本框綁定到數據源,但是當數據源更改時文本框沒有更新......這是我的代碼,任何人都可以提示我在做什麼錯? 謝謝!控件在綁定數據源更改時沒有更新?

public Controller() 
{ 
      myForm.databaseTextBinding = new Binding("Text", ac, "connString"); 
     myForm.databaseTextBinding.ControlUpdateMode = ControlUpdateMode.OnPropertyChanged; 

     myForm.setupSources(); 
} 

public partial class Form1 : Form 
{ 

    public Binding databaseTextBinding; 


    public void setupSources() 
    { 
     DatabaseTextBox.DataBindings.Add(databaseTextBinding); 

    } 
} 

更新: 我現在可以讓文本框將更新。但我有一個新問題。數據源本身通過我創建一個新的ac對象而改變。但是,如果我這樣做,綁定現在更長時間更新。我認爲,也許財產不會改變,但我相信這是!

比如這個作品

ac.cString = "ABC"; 
ac.cString = "DEF"; 

但這並不...

ac = new AccessConnector(path); 
ac.cString = "ABC"; 
ac.cString = "DEF"; 

回答

1

。假定你BindingBindingSource綁定到文本框,你需要一個BindingSource.ResetBindings()添加到您的代碼。

+0

不,我沒有使用綁定源,我應該嗎? – user2666350

+0

不一定,但他們在winform編程中有幫助。 –

1

綁定對象(即ac)的類型是否實現INotifyPropertyChanged?如果是這樣,屬性「connString」在更改時引發PropertyChanged事件嗎?

如果沒有,你可以看看在INotifyPropertyChanged sample

編輯:

的部分不工作是因爲你沒有更改綁定到新的對象 - 它仍然綁定到老目的。當您將新對象分配給引用變量ac時,與原始對象的綁定不會更改 - 因此它仍指向前一個對象。

相關問題