VB.NET テキストボックスを文字列に読み込んで、その文字列を他の用途に使用するには?

私のフォームには2つのテキストボックスがあります。テキストボックス1とテキストボックス2です。テキストボックス1には情報が入ります。ボタンでテキストボックス1を読み込んで文字列にするか、アプリがテキストボックスを読み込んで情報をメモリに保存する方法をコード化したいと思います。

そして、その文字列をアプリケーションの2番目の部分に読み込めるようにしたいのです。

どこまでやっていいのかわかりません。どうすればいいのでしょうか?

  1. ストリームリーダーを使ってテキストボックスを文字列に読み込み、ストリームライターを使ってデータを文字列に書き込む。

  2. テキストボックスを.txtファイルに保存し、openfiledialogを使ってテキストファイルを文字列に読み込んで使用する?

何かお役に立てることがありましたら、ぜひ教えてください。

ソリューション

Access VBAのような古いVB方言では、デフォルトのプロパティという概念があり、このような書き方をすると自動的にアクセスされます。

s = Me!txtMyTextBox

裏ではVBAが自動的にこんなことをしていました。

s = Me!txtMyTextBox.Value

VB.NETでは、Dim t = Textbox1と記述すると、tTextBoxと型付けされ、テキストボックスへの参照が含まれます。テキストボックスからテキストを取得するには、その Text プロパティに明示的にアクセスします。

Dim s as String
s = Textbox1.Text;

この文字列を後でどこで使用するかは、あなた次第です。文字列をフォームの外で使いたい場合、2つの可能性があります。フォームに文字列をエクスポートさせるか、フォームから外部に文字列を取得するかです。

1 テキストのエクスポート

モジュール (ここでは MyModule とします) で、パブリックな文字列を定義します。

Public TheText as String

フォームに

MyModule.TheText = Textbox1.Text;

このテキストは、アプリケーション全体でグローバルに利用できるようになりました。


2 外部からの取得

フォームの中で、Textboxのテキストをプロパティで囲みます。

Public ReadOnly Property TheText() As String
    Get
        Return Textbox1.Text
    End Get
End Property

どこか他の場所で、そのフォームがメインフォームで、frmMainと呼ばれていると仮定します。

Console.WriteLine(DirectCast(Application.OpenForms(0), frmMain).TheText)

あるいは、フォーム変数が自分の特定のフォームとして強くタイプされている場合、例えば Dim frm As frmMain (単に Form としてではなく)。

Console.WriteLine(frm.TheText)
解説 (0)

テキストボックスからテキストを取得するには、TextBox.Textプロパティを使用して、その値を文字列に格納します。その文字列をファイルに保存するには、System.IO.File.WriteAllText(string filename, string content)を使用します。

文字列を保存して使用する方法はたくさんあります。これは単に、文字列をファイルに保存するための簡単な方法です(必ずしもベストではありません)。

解説 (3)