1.RichTextBox コントロールに関するワンポイントテクニック集(22_Rtf_01) (旧、SampleNo.115) |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.テキストファイルを読み込み RichTextBox に表示する |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '01.テキストファイルを読み込み RichTextBox に表示する RichTextBox1.LoadFile("..\..\..\data\test.txt", RichTextBoxStreamType.PlainText) End Sub |
2.リッチテキストファイルを読み込み RichTextBox に表示する |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '02.リッチテキストファイルを読み込み RichTextBox に表示する RichTextBox1.LoadFile("..\..\..\data\test.rtf", RichTextBoxStreamType.RichText) End Sub |
3.WordWrap を解除し、水平スクロールバーを表示する |
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '03.WordWrap を解除し、水平スクロールバーを表示する 'WordWrap を解除する RichTextBox1.WordWrap = False '常に水平スクロールバーと垂直スクロールバーの両方を表示します。 RichTextBox1.ScrollBars = RichTextBoxScrollBars.ForcedBoth End Sub |
4.RichTextBox に表示されているテキストをテキスト形式で保存 |
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click '04.RichTextBox に表示されているテキストをテキスト形式で保存 RichTextBox1.SaveFile("saveTest.txt", RichTextBoxStreamType.PlainText) End Sub |
5.RichTextBox に表示されているテキストをリッチテキスト形式で保存 |
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click '05.RichTextBox に表示されているテキストをリッチテキスト形式で保存 RichTextBox1.SaveFile("saveTest.rtf", RichTextBoxStreamType.RichText) End Sub |
6.フォーカスを失っても選択範囲は強調表示のままに設定 |
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click '06.フォーカスを失っても選択範囲は強調表示のままに設定 RichTextBox1.HideSelection = False 'Default は True End Sub |
7.RichTextBox の選択範囲のテキストを指定のカラーに設定する |
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click '07.RichTextBox の選択範囲のテキストを指定のカラーに設定する Using ColorDialog1 As New ColorDialog With ColorDialog1 .AllowFullOpen = True '現在設定の色を選択(特に設定しなくてもよい) .Color = RichTextBox1.SelectionColor 'ダイアログボックスを表示し、OK ボタンが押されたら If .ShowDialog = Windows.Forms.DialogResult.OK Then RichTextBox1.SelectionColor = .Color End If End With End Using End Sub |
8.RichTextBox の選択文字を太字に設定する |
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click '08.RichTextBox の選択文字を太字に設定する RichTextBox1.SelectionFont = New Font(RichTextBox1.SelectionFont, FontStyle.Bold) End Sub |
9.RichTextBox の選択文字のフォントスタイルを変更する |
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click '09.RichTextBox の選択文字のフォントスタイルを変更する 'RichTextBox1.SelectionFont = New Font("MS P明朝", 12, RichTextBox1.SelectionFont.Style) 'フォントダイアログを使った場合 Using FontDialog1 As New FontDialog With FontDialog1 .ShowColor = True 'ダイアログボックスに色の選択肢を表示 .MinSize = 8 'ユーザーが選択できる最小値を設定 .MaxSize = 24 'ユーザーが選択できる最大値を設定 .Font = RichTextBox1.SelectionFont '現在の設定のフォントを表示 .Color = RichTextBox1.SelectionColor '現在の設定のフォントカラーを表示 'ダイアログボックスを表示しOKボタンが押されたら If .ShowDialog = Windows.Forms.DialogResult.OK Then RichTextBox1.SelectionFont = .Font RichTextBox1.SelectionColor = .Color End If End With End Using End Sub |
10.RichTextBox のテキスト内を指定の文字列を検索する(再度クリックすれば見つかった位置から再度検索する) |
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click '10.RichTextBox のテキスト内を指定の文字列を検索する(再度クリックすれば見つかった位置から再度検索する) Dim intPos As Integer With RichTextBox1 .SelectionStart = .SelectionStart + .SelectionLength .SelectionLength = 0 intPos = .Find("滋賀県", .SelectionStart, -1, RichTextBoxFinds.None) If intPos = -1 Then MessageBox.Show("滋賀県" & "は見つかりませんでした") End If .Focus() End With End Sub |
11.RichTextBox のテキストの選択行を左揃えで表示する |
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click '11.RichTextBox のテキストの選択行を左揃えで表示する RichTextBox1.SelectionAlignment = HorizontalAlignment.Left End Sub |
12.RichTextBox のテキストの選択行を中央揃えで表示する |
Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click '12.RichTextBox のテキストの選択行を中央揃えで表示する RichTextBox1.SelectionAlignment = HorizontalAlignment.Center End Sub |
13.RichTextBox のテキストの選択行を右揃えで表示する |
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click '13.RichTextBox のテキストの選択行を右揃えで表示する RichTextBox1.SelectionAlignment = HorizontalAlignment.Right End Sub |
14.RichTextBox に表示されているテキストの総行数を取得する |
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click '14.RichTextBox に表示されているテキストの総行数を取得する Dim nLine As Integer = RichTextBox1.Lines.Length MessageBox.Show(String.Format("総行数 = {0} 行です。", nLine)) Debug.WriteLine(nLine) '結果 42 End Sub |
15.RichTextBox のデフォルトのフォントが自動的に変更されるのを防止 |
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click '15.RichTextBox のデフォルトのフォントが自動的に変更されるのを防止 '実行後、英数半角で文字を入力し、再度実行後、文字を入力して比べて見て下さい。 RichTextBox1.Font = New Font("MS P明朝", 16, FontStyle.Regular) Debug.WriteLine(RichTextBox1.LanguageOption) If RichTextBox1.LanguageOption = (RichTextBoxLanguageOptions.AutoFont Or RichTextBoxLanguageOptions.DualFont) Then 'ユーザーインターフェイスの既定のフォントを使用するよう指定します RichTextBox1.LanguageOption = RichTextBoxLanguageOptions.UIFonts Else RichTextBox1.LanguageOption = (RichTextBoxLanguageOptions.AutoFont Or RichTextBoxLanguageOptions.DualFont) End If MessageBox.Show(String.Format("LanguageOption = {0} で Font = {1} です。", RichTextBox1.LanguageOption, RichTextBox1.Font)) Debug.WriteLine(RichTextBox1.LanguageOption) End Sub |
16.RichTextBox で Tab キーを押した場合タブ(空白)を入力できるようにする |
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click '16.RichTextBox で Tab キーを押した場合タブ(空白)を入力できるようにする RichTextBox1.AcceptsTab = Not RichTextBox1.AcceptsTab '既定値は、false End Sub |
17.RichTextBox の指定の位置に TAB 間隔を設定する(設定単位は ピクセル) |
Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click '17.RichTextBox の指定の位置に TAB 間隔を設定する(設定単位は ピクセル) 'RichTextBox のすべてのテキストを選択する RichTextBox1.Text = "123" & vbTab & "abc" & vbTab & "あいう" & vbTab & "123" & vbTab _ & "ABC" & vbTab & "あいう" & vbTab & "123" RichTextBox1.SelectAll() RichTextBox1.SelectionTabs = New Integer() {0, 10, 100, 250, 300, 500, 550, 700} RichTextBox1.SelectionLength = 0 RichTextBox1.AcceptsTab = True End Sub 上記で問題がある場合は、Win32 API 関数を使った方法で設定して見て下さい。 |
18.RichTextBox に入力された URL を自動的にリンクとして書式設定する |
Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click '18.RichTextBox に入力された URL を自動的にリンクとして書式設定する '(これだけではリンクをクリックしてもなにもおこらない。) RichTextBox1.Text = "http://www.hanatyan.sakura.ne.jp/" RichTextBox1.DetectUrls = True '既定値は、true です。 End Sub Private Sub RichTextBox1_LinkClicked(sender As Object, e As LinkClickedEventArgs) Handles RichTextBox1.LinkClicked 'リンクをクリックされた場合、指定リンクを開く(リンクのクリックを処理する) System.Diagnostics.Process.Start(e.LinkText) End Sub |
19.RichTextBox のテキストをクリック毎に10% づつ拡大/縮小して表示する |
Private ZoomFact As Single = 1.0 Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click '19.RichTextBox のテキストをクリック毎に10% づつ拡大/縮小して表示する 'RichTextBox のテキストをクリック毎に10% づつ拡大して表示する ZoomFact = CSng(ZoomFact + 0.1) RichTextBox1.ZoomFactor = ZoomFact 'RichTextBox のテキストをクリック毎に10% づつ縮小して表示する 'ZoomFact = CSng(ZoomFact - 0.1) 'RichTextBox1.ZoomFactor = ZoomFact End Sub |
20.現在のキャレット(カーソル)位置を取得及びその位置にクリップボードから文字列を挿入 |
Private Sub Button20_Click(sender As Object, e As EventArgs) Handles Button20.Click '20.現在のキャレット(カーソル)位置を取得及びその位置にクリップボードから文字列を挿入 MessageBox.Show("現在のキャレット位置は、" & _ RichTextBox1.SelectionStart & " 文字目にあります") '現在システムクリップボードにあるデータを取得します Dim iData As IDataObject = Clipboard.GetDataObject() 'クリップボードにテキストデータがあれば If iData.GetDataPresent(DataFormats.Text) Then '現在のキャレット位置に挿入する RichTextBox1.SelectedText = CType(iData.GetData(DataFormats.Text), String) End If End Sub |
21. |
22. |
23. |
24. |
25. |
検索キーワード及びサンプルコードの別名(機能名) |
リッチテキストボックス |