1.TextBox コントロールに関するワンポイントテクニック集(23_Txt_01) (旧、SampleNo.047) |
1 .TextBox で Tab キーを押した場合タブ(空白)を入力できるようにする(AcceptsTab プロパティ) 2 .TextBox のテキストの末尾に追加書き込みをする(AppendText メソッド) 3 .TextBox の背景色及び前景色を設定する(BackColor プロパティ / ForeColor プロパティ ) 4 .TextBox に入力された文字を大文字又は小文字に変換する(CharacterCasing プロパティ) 5 .TextBox からすべてのテキストを削除する(Clear メソッド) 6 .指定の TextBox にフォーカスを設定する(Focus メソッド) 7 .TextBox でフォーカスが移動しても強調表示のままにしておく(HideSelection プロパティ) 8 .複数行表示の TextBox のテキストの行数を取得する(Lines プロパティ) 9 .TextBox に入力又は貼り付けできる最大文字数を設定する(MaxLength プロパティ) 10.TextBox の内容が変更されたかどうかを取得する(Modified プロパティ) 11.TextBox で複数行の入力ができるように設定する(Multiline プロパティ) 12.TextBox をパスワード入力用に設定する(PasswordChar/UseSystemPasswordChar プロパティ) 13.TextBox を読み取り専用にする(ReadOnly プロパティ) 14.TextBox で現在選択されているテキストを取得又は、他の文字列に置き換える(SelectedText プロパティ) 15.現在のキャレット(カーソル)の位置を取得する(SelectionStart / SelectionLength プロパティ) 16.TextBox のテキストを中央に配置・左側に配置・右側に配置する(TextAlign プロパティ) 17.複数行 TextBox で自動的に次の行に折り返す(WordWrap プロパティ) 18.TextBox で IME モードを設定する 19. 20. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 :このページの Tips は、TextBox のプロパティまたは、メソッドを使った1行 Tips を主体に掲載しております。 : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.TextBox で Tab キーを押した場合タブ(空白)を入力できるようにする |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '01.TextBox で Tab キーを押した場合タブ(空白)を入力できるようにする(AcceptsTab プロパティ) TextBox2.Multiline = True 'こちらも True でないと有効にならない。 TextBox2.AcceptsTab = True '既定値は、false です TextBox2.Focus() End Sub TextBox で Tab キーを押した場合タブ(空白)を入力できるようにするには、Multiline プロパティも True に設定する必要があります。 AcceptsTab = True の場合、次のコントロールにフォーカスを移動する場合は Ctrl キーを押しながら Tab キーを押す必要があります。 |
2.TextBox のテキストの末尾に追加書き込みをする |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '02.TextBox のテキストの末尾に追加書き込みをする(AppendText メソッド) TextBox1.Text = "あいうえお" 'VB6.0 では、下記のように方法でした TextBox1.Text = TextBox1.Text & "ABCD" 'それを .NET 風に書くと下記のようになる TextBox1.Text &= "EFGH" 'AppendText メソッドを使用すると同様の処理ができる TextBox1.AppendText("IJKLM") '結果 あいうえおABCDEFGHIJKLM と表示される End Sub 結果としては、どれも同じですが、多くの連結が必要な場合には、AppendText メソッドを使用した方がパフォーマンス的には優れているようです。 余談ですが、文字列の連結演算子として + 演算子を使っておられるのをよくみかけますが、他の言語は知りませんが、 Visual Basic では、& 演算子を使用し、+ 演算子は、2 つの数を加算するような場合に使用するように使い分けるべきかと考えます。 |
3.TextBox の背景色及び前景色を設定する |
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '03.TextBox の背景色及び前景色を設定する(BackColor プロパティ / ForeColor プロパティ ) TextBox1.BackColor = Color.Yellow TextBox1.ForeColor = Color.Red End Sub |
4.TextBox に入力された文字を大文字又は小文字に変換する |
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click '04.TextBox に入力された文字を大文字又は小文字に変換する(CharacterCasing プロパティ) TextBox1.Text = "ABCDEFあいうえおghijkl" If TextBox1.CharacterCasing = CharacterCasing.Lower Then TextBox1.CharacterCasing = CharacterCasing.Upper '結果 ABCDEFあいうえおGHIJKL Else TextBox1.CharacterCasing = CharacterCasing.Lower '結果 abcdefあいうえおghijkl End If End Sub |
5.TextBox からすべてのテキストを削除する |
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click '05.TextBox からすべてのテキストを削除する(Clear メソッド) 'VB6.0 や VBA には Clear メソッドがないので下記のように空文字を代入する事で消去していましたが TextBox1.Text = "" '.NET 系では、Clear メソッドが追加されたのでそれを使います。 TextBox2.Clear() End Sub |
6.指定の TextBox にフォーカスを設定する |
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click '06.指定の TextBox にフォーカスを設定する(Focus メソッド) TextBox1.Focus() 'VB6.0 や VBA では下記のようになります 'Text1.SetFocus End Sub |
7.TextBox でフォーカスが移動しても強調表示のままにしておく |
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click '07.TextBox でフォーカスが移動しても強調表示のままにしておく(HideSelection プロパティ) 'フォーカスを失っても、強調表示されたままの場合は False です。 TextBox1.HideSelection = False '既定値は、True です(勘違いしやすいので注意) TextBox1.Text &= "あいうえお" TextBox1.SelectAll() TextBox2.Focus() End Sub |
8.複数行表示の TextBox のテキストの行数を取得する |
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click '08.複数行表示の TextBox のテキストの行数を取得する(Lines プロパティ) TextBox2.Multiline = True 'Multiline = True に設定されている事 'テキストファイルを現在のエンコード(シフトJIS)で開く Using sr As New System.IO.StreamReader("..\..\..\data\test.txt", System.Text.Encoding.Default) 'TextBox に読込み表示 TextBox2.Text = sr.ReadToEnd End Using '------- ここからが本題 -------------------- MessageBox.Show("TextBox2.Lines = " & TextBox2.Lines.Count) 'または MessageBox.Show("TextBox2.Lines = " & TextBox2.Lines.Length) End Sub |
9.TextBox に入力又は貼り付けできる最大文字数を設定する |
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click '09.TextBox に入力又は貼り付けできる最大文字数を設定する(MaxLength プロパティ) '入力文字数の Max を10文字に制限する TextBox1.MaxLength = 10 '下記のようにプログラムからなら入力できる TextBox1.Text = "1234567890123456" End Sub |
10.TextBox の内容が変更されたかどうかを取得する |
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click '10.TextBox の内容が変更されたかどうかを取得する(Modified プロパティ) 'コントロールが作成されてから、またはコントロールが最後に設定されてから、 '【ユーザー】が TextBox コントロールを変更したかどうかを示す値を取得または設定します。 If TextBox1.Modified Then MessageBox.Show("文字列が変更されました。") Else MessageBox.Show("文字列は変更されていません。") End If End Sub |
11.TextBox で複数行の入力ができるように設定する |
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click '11.TextBox で複数行の入力ができるように設定する(Multiline プロパティ) TextBox2.Multiline = True End Sub |
12.TextBox をパスワード入力用に設定する |
Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click '12.TextBox をパスワード入力用に設定する(PasswordChar/UseSystemPasswordChar プロパティ) TextBox1.Text = "myPassword" 'クリック毎に True / False を切り替えています。 'TextBox コントロール内のテキストを既定のパスワード文字として表示するかどうかを示す値を取得または設定します。 'UseSystemPasswordChar プロパティは、PasswordChar プロパティよりも優先されます。 'UseSystemPasswordChar プロパティは、複数行 TextBox では使用できません。 'VB2005 以降で追加されたようですが試した限りでは、特筆すべき利点が見当たりません。 TextBox1.UseSystemPasswordChar = Not TextBox1.UseSystemPasswordChar '又は、 'TextBox コントロール内のテキストを既定のパスワード文字として表示するかどうかを示す値を取得または設定します。 TextBox1.PasswordChar = CChar("*") '標準の状態に戻す場合(MSDN では、マスクしない場合は、このプロパティの値を 0 (文字値) ' に設定します。既定値も 0 (文字値) です。と書いていますが) 'TextBox1.PasswordChar = CChar(vbNullString) '読み取る時は、普通の場合と同様にプログラムから読み取る事ができます。 MessageBox.Show("TextBox1.Text = " & TextBox1.Text) End Sub |
13.TextBox を読み取り専用にする |
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click '13.TextBox を読み取り専用にする(ReadOnly プロパティ) TextBox1.Text = "あいうえお" 'true に設定されている場合、ユーザーは実行時にコントロールの内容を変更できません。 TextBox1.ReadOnly = True 'true に設定されていても、コードでは Text プロパティの値を設定できます。 TextBox1.Text = "かきくけこ" End Sub |
14.TextBox で現在選択されているテキストを取得又は、他の文字列に置き換える |
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click '14.TextBox で現在選択されているテキストを取得又は、他の文字列に置き換える(SelectedText プロパティ) TextBox1.ReadOnly = False '上記の設定を解除しているだけで関係ありません。 TextBox1.Text = "TextBox2 上の文字列を選択してから実行して下さい。" '------------------------------------------------------------------------------ '選択した文字を取得する場合 MessageBox.Show(TextBox2.SelectedText) '選択した文字を他の文字に置き換える場合。 TextBox2.SelectedText = "置換文字" End Sub |
15.現在のキャレット(カーソル)の位置を取得する |
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click '15.現在のキャレット(カーソル)の位置を取得する(SelectionStart / SelectionLength プロパティ) TextBox2.HideSelection = False '必須ではありませんが、解りやすいように。 Dim cPos As Integer = TextBox2.SelectionStart + TextBox2.SelectionLength MessageBox.Show("現在のキャレットの位置は、" & cPos & " 文字目にあります。") End Sub |
16.TextBox のテキストを中央に配置・左側に配置・右側に配置する |
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click '16.TextBox のテキストを中央に配置・左側に配置・右側に配置する(TextAlign プロパティ) TextBox1.Text = "あいうえお" TextBox1.TextAlign = HorizontalAlignment.Left MessageBox.Show("") TextBox1.TextAlign = HorizontalAlignment.Center MessageBox.Show("") TextBox1.TextAlign = HorizontalAlignment.Right End Sub |
17.複数行 TextBox で自動的に次の行に折り返す |
Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click '17.複数行 TextBox で自動的に次の行に折り返す(WordWrap プロパティ) Me.Width = 200 TextBox2.Multiline = True TextBox2.WordWrap = True '既定値は、true です。 TextBox2.Text = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやいゆえよらりるれろ" MessageBox.Show("") TextBox2.WordWrap = False '既定値は、true です。 End Sub |
18.TextBox で IME モードを設定する |
Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click 'VB6.0 と同様に ImeMode プロパティで設定します。設定値については、ImeMode 列挙体をご覧下さい。 TextBox1.ImeMode = Windows.Forms.ImeMode.Hiragana End Sub |
19. |
20. |
検索キーワード及びサンプルコードの別名(機能名) |
テキストボックス テキストボックス |