2017-08-28 5 views
0

異なるクラスのテキストボックスの値にアクセスしようとしています。テキストボックスがwinform1.csに存在し、私は私がインテリセンスとテキストボックスを表示することができます私はwinform1 wf = new winform1();をインスタンス化しているtesting.csの上部にtesting.cs値常にヌル

でそれらにアクセスしたいが、私は

を入力した場合
Messagebox.Show(wf.txtfname.Text); 
Messagebox.Show(wf.txtlname.Text); 

null参照例外が発生します。私が直接ウィンドウを使用し、wf.txtfname.Textと入力すると、""が返されます。テキストボックスの修飾子はpublicに設定されています。

これらのテキストボックスの値を別のクラスから取得できるように変更する必要はありますか?

それが違いを行う場合、私は内の値を表示しようとしています方法は

protected override void() 

として宣言されているこれは、2つのテキストボックス

public System.Windows.Forms.TextBox txtfname; 
public System.Windows.Forms.TextBox txtlname; 
+0

あなたが 'winform1 wf = new winform1();'を実行したとき、そのウィンドウはすでに開いていますか? – Guilherme

+0

はい - 上記の構文を実行すると、winformが既に開いています。 – BellHopByDayAmetuerCoderByNigh

+0

あなたが見なければならないテキストボックスの格闘プログラムはありますか?私は_Leave()イベントを持っていますが、それはそれです。 – BellHopByDayAmetuerCoderByNigh

答えて

1

このためdesigner.csから構文です表示されていないフォームにアクセスしているためです。あなたがそうするならば、あなたがそれらを得ることに注意してください。

winform1 wf = new winform1(); 
wf.Show(); 

これらの値を取得している実際のフォームが表示されます。

これを使用するには、正しいオブジェクトインスタンスを取得する必要があります。おそらく、そのウィンドウの別のインスタンスを開く予定がない場合は、参照を保持する静的プロパティを作成できます。

Messagebox.Show(winform1.MainInstance.txtfname.Text); 
Messagebox.Show(winform1.MainInstance.txtlname.Text); 

public static winform1 MainInstance { get; set; } 
  • MainInstance = this; 
    
  • winform1クラス、そのようなアクセスのコンストラクタ内であることを置く:winform1クラス内であること入れ

  • +0

    MainInstance = thisにする必要があります。 InitializeComponents();の上または下に移動します。 – BellHopByDayAmetuerCoderByNigh

    +0

    私はそれが何か違いがあるとは思わないが、腹を張ってください。 – Guilherme

    +0

    はまだ返っています " – BellHopByDayAmetuerCoderByNigh

    関連する問題