2

我正在尝试将一个简单的单行字符串绑定到文本框的“文本”属性,但它似乎不起作用。我究竟做错了什么?

string loadedFilename;

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

我只想使用文本框向用户显示他们当前正在处理的文件。我正在使用文本框,以便他们可以在 winforms 中复制此字符串。(标签不会那样做)

我不能使用对象包装器,因为这会在我的代码中导致一连串的复杂性。必须有一个简单的方法来做到这一点。

4

4 回答 4

2

由于您关于不封装加载文件名的最新评论,我会说:不要使用数据绑定。而是用老式的方式来做

textBoxFileName.Text = loadedFilename;

根据流程,您可以将其作为表单代码中的内部属性,如下所示

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

或者在 Form_Load 事件中设置它。

每次都有效。

于 2012-04-09T09:19:41.547 回答
2
string loadedFilename;

textBoxFileName.DataBindings.Add("Text", loadedFilename, "");
于 2013-05-23T06:43:48.407 回答
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));
   }
 }
}
于 2013-05-29T14:12:39.710 回答
0

我会看看这个另一个问题 - TextBox 的数据绑定

Joepro 建议为您的班级使用 INotifyPropertyChanged,然后绑定文本框。

于 2012-04-07T19:56:40.650 回答