2012-04-07 52 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)); 
    } 
} 
}