2012-04-07 53 views
2

我試圖將簡單的單行字符串綁定到文本框的「文本」屬性,但它似乎沒有工作。我究竟做錯了什麼?數據綁定到文本框的字符串

string loadedFilename; 

textBoxFileName.DataBindings.Add("Current File", loadedFilename, "Text"); 

我只是想向用戶展示他們目前使用文本框正在處理的文件。我正在使用一個文本框,以便他們可以在WinForms中複製此字符串。 (一個標籤不會這樣做)

我不能使用對象包裝,因爲這會導致在我的代碼中出現一連串的併發症。必須有一個簡單的方法來做到這一點。

回答

2

由於您最近關於不封裝loadedFilename的評論,我會說:不要使用數據綁定。相反,不喜歡它

textBoxFileName.Text = loadedFilename; 

根據流量的老式方法,你可以把它在形式代碼的內部屬性格式像這樣

internal string Filename { 
get { return this.loadedFilename;} 
set { 
    this.loadedFilename = value; 
    textBoxFileName.Text = value; 
    } 
} 

或將其設置在Form_Load事件。

每次工作。

+0

精美完成! – Kashif 2012-04-09 21:20:51

0

我會看看這個問題,其他 - Data binding for TextBox

Joepro使用INotifyPropertyChanged的爲您的類,然後結合文本框reccomended。

+0

不幸的是,我不能封裝字符串 「loadedFilename」 到自己的對象。這樣做會在我的代碼的其餘部分產生級聯效應,並進一步導致併發症。 – Kashif 2012-04-08 00:18:59

1
string loadedFilename; 

textBoxFileName.DataBindings.Add("Text", loadedFilename, ""); 
1
class Form1:System.Windows.Form, INotifyPropertyChanged{ 
public event PropertyChangedEventHandler PropertyChanged; 
private loadFileName; 
public LoadFileName{ 
    get{ 
     return loadFileName; 
    } 
    set{ 
     if(this.loadFileName == value) return; 
     this.loadFileName = value; 
     NotifyPropertyChanged("LoadFileName"); 
    } 
} 

public Form1(){ 
    Initalize(); 
    this.textbox1.DataBindings.Add("Text",this,"LoadFileName"); 
} 
public NotifyPropertyChanged(string propertyName){ 

    if (PropertyChanged != null) 
    { 
     PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 
}