Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串数据绑定到文本框_C#_String_Data Binding_Textbox - Fatal编程技术网

C# 将字符串数据绑定到文本框

C# 将字符串数据绑定到文本框,c#,string,data-binding,textbox,C#,String,Data Binding,Textbox,我试图将一个简单的单行字符串绑定到textbox的“text”属性,但它似乎不起作用。我做错了什么 string loadedFilename; textBoxFileName.DataBindings.Add("Current File", loadedFilename, "Text"); 我只想使用文本框向用户显示他们当前正在处理的文件。我正在使用一个文本框,这样他们就可以在winforms中复制这个字符串。(标签不会这样做) 我不能使用对象包装器,因为这将导致代码中的一系列复杂问题。必

我试图将一个简单的单行字符串绑定到textbox的“text”属性,但它似乎不起作用。我做错了什么

string loadedFilename;

textBoxFileName.DataBindings.Add("Current File", loadedFilename, "Text");
我只想使用文本框向用户显示他们当前正在处理的文件。我正在使用一个文本框,这样他们就可以在winforms中复制这个字符串。(标签不会这样做)


我不能使用对象包装器,因为这将导致代码中的一系列复杂问题。必须有一个简单的方法来做到这一点。

我想看看另一个问题-


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

由于您最近关于不封装loadedFilename的评论,我想说:不要使用数据绑定。相反,要像这样做

textBoxFileName.Text = loadedFilename;
根据流程的不同,您可以将其作为表单代码中的一个内部属性,如下所示

internal string Filename {
get { return this.loadedFilename;}
set {
    this.loadedFilename = value;
    textBoxFileName.Text = value;
    }
}
或者在Form_Load事件中设置它


每次都有效。

不幸的是,我无法将字符串“loadedFilename”封装到它自己的对象中。这样做将在我的代码的其余部分产生级联效应,并使代码进一步复杂化。
string loadedFilename;

textBoxFileName.DataBindings.Add("Text", loadedFilename, "");
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));
   }
 }
}