0

これは些細な問題のように思えますが、私はそれを機能させることができず、最後の 30 分間をぐるぐる回って過ごしました :-(

テキスト ボックスを含むフォームと、別のクラスにあるオブジェクト ハンドラーがあります。オブジェクト ハンドラからの出力でテキスト ボックスの内容を更新したいと思います。

私はこの方法でアクセスしようとしています:

formName.textBoxName.Text = value

しかし、何も起こりません。ただし、同じフォームのボタンのステータスを読み取ることができるので、混乱しています。クラスからいくつかのフォームコントロールにアクセスできるようですが、読み取り専用ですか?

デバッグ ウィンドウで表示できるので、クラスから出力を取得していることはわかっています。

テキスト ボックスの修飾子プロパティを変更しようとしましたが、違いはありませんでした。これは間違いだと思いますが、表示されません。

textBox の値を別のクラスから変更するにはどうすればよいですか?

これが私のコードです:

クラス: Summarizer.vb

If frm_Settings.btn_NextSection.Enabled = True Then
    Console.WriteLine("Boo!")
    frm_Settings.txt_NextSection.Text = "Boo!"
End If

フォーム: frm_Settings は、(特に) テキスト ボックス txt_NextSection とボタン btn_NextSection で構成されます。ボタンの値は正しく読み取られていますが、テキスト ボックスの内容を設定できません。

前もって感謝します

4

1 に答える 1

1

回答を試みますが、まだ不明な点が多くあります。
あなたのコードを実行するときfrm_Settingsおそらく、クラスのインスタンスを宣言して初期化しますSummarizer
その時点で、クラスのコンストラクターに、の現在のインスタンスへの参照を渡しますfrm_Settings

....
Dim sz = new Summarizer(Me)
sz.ExecuteSomeMethod()
.....

Summarizer次に、この方法でクラスのコンストラクターを追加します

Public Class Summarizer

   ' This is the local reference to the frm_Setting instance passed in the constructor'
   Dim callerInstance As frm_Settings

   ' This constructor receives the instance of the frm_Settings class 
   'that has created the instance of Summarizer'
   Public Sub New(ByVal caller As frm_Settings)
       ' Set the local reference to the instance passed in'
       callerInstance = caller
   End Sub 

   .....

End Class

今、テキストボックスを更新する必要があるハンドラーで、コードを次のように変更できます

' Use the instance of the frm_Settings that has created the instance of this class'
If callerInstance.btn_NextSection.Enabled = True Then
    Console.WriteLine("Boo!")
    callerInstance.txt_NextSection.Text = "Boo!"
End If
于 2013-04-16T23:11:41.740 に答える