我正在尝试将简单的单行字符串绑定到文本框的“text”属性,但它似乎不起作用。我做错了什么?
string loadedFilename;
textBoxFileName.DataBindings.Add("Current File", loadedFilename, "Text");
我只想向用户显示他们正在使用文本框处理哪个文件。我正在使用文本框,以便他们可以在winforms中复制此字符串。 (标签不会这样做)
我不能使用对象包装器,因为这会在我的代码中引起一连串的复杂问题。必须有一个简单的方法来做到这一点。
答案 0 :(得分:2)
由于你最近关于没有封装loadedFilename的评论,我会说:不要使用数据绑定。而是采用像
这样的老式方式textBoxFileName.Text = loadedFilename;
根据流程的不同,您可以将其作为形式代码中的内部属性,如此
internal string Filename {
get { return this.loadedFilename;}
set {
this.loadedFilename = value;
textBoxFileName.Text = value;
}
}
或者在Form_Load事件中设置它。
每次都有效。
答案 1 :(得分:2)
string loadedFilename;
textBoxFileName.DataBindings.Add("Text", loadedFilename, "");
答案 2 :(得分: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));
}
}
}
答案 3 :(得分:0)
我会看看另一个问题 - Data binding for TextBox
Joepro建议您为您的班级使用INotifyPropertyChanged,然后绑定文本框。