2

単純な 1 行の文字列をテキスト ボックスの「テキスト」プロパティにバインドしようとしていますが、機能していないようです。私は何を間違っていますか?

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 に答える
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 に答える