変数内に入っているテキストから'が先頭にある行の色のみを灰色に変更して結果をリッチテキストボックスに表示するという事をしたいのですが、うまくいかず困っております・・。
最初は、変数text内に文字列が入っているとして下記コードを書いたのですが、無限ループになってしまいますし、色々サイトを見ていて無理なんだと気づき、次はhttp://itsuko-m.hp.infoseek.co.jp/rtf04.htm
を参考にしてみたのですが、やはり良く分かりません・・。
申し訳ありませんが、何か助言頂けると嬉しいです。
VB.NETです。
Do
RichTextBox1.SelectionStart = text.IndexOf("'")
RichTextBox1.SelectionLength = text.IndexOf(vbCrLf) - text.IndexOf("'")
RichTextBox1.SelectionColor = System.Drawing.Color.LightGray
Loop While text.IndexOf("'") <= -1
No.1
- 回答日時:
VB.NETは未経験者なのでヘンな事言ってたらすみません。
text.IndexOf("'")というのは、textの中の文字列の中から最初に出てくる"'"の位置を返しますか?
とすると、例えば10文字目に"'"があるとすればtextの内容が変わらない限り
ずっとtext.IndexOf("'")は10なので、
>Loop While text.IndexOf("'") <= -1
という終了条件を抜け出せなくて無限ループになるのではないでしょうか?
アドバイスありがとうございます。
はい、無限ループになる原因はおっしゃる通りなのですが、問題はそこではなく
下記のように直接文字列を指定して1文字目から2文字をグレーに変えるというコードを書いた場合でも、最初実行すると、ちゃんと2文字の色が変わるのですが、色が変わっている状態で再度同じコードを実行すると全体の文字色が変わってしまいまして・・。
RichTextBox1.SelectionStart = 1
RichTextBox1.SelectionLength = 2
RichTextBox1.SelectionColor = System.Drawing.Color.LightGray
No.2
- 回答日時:
そうなんですか!?
フォームにリッチテキストとボタンを1つずつ貼り付け。
で、ボタンのクリックイベントに
>RichTextBox1.SelectionStart = 1
>RichTextBox1.SelectionLength = 2
>RichTextBox1.SelectionColor = System.Drawing.Color.LightGray
を書いて2度押すと全体の文字色がグレーになるということでしょうか?
リッチテキストはVB6でもあるので、VB6で相当する処理を行ってみました。
結果は、何度実行ボタンを押しても2文字の色が変わるだけでした。
.NETになった時に何があったんでしょうね・・・。
ごめんなさい。お役には立てなかったみたいで。
No.3ベストアンサー
- 回答日時:
こんな事をしたいのですか?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim text As String = _
"あいうえお" & vbCrLf & _
"'かきくけこ" & vbCrLf & _
"さしすせそ" & vbCrLf & _
"たちつてと" & vbCrLf & _
"'なにぬねの" & vbCrLf & _
"はひふへほ" & vbCrLf & _
"まみむめも" & vbCrLf & _
"'やゆよ" & vbCrLf & _
"らりるれろ" & vbCrLf & _
"わをん"
Me.RichTextBox1.Text = text
Dim rtb As RichTextBox = Me.RichTextBox1
Dim intS As Integer = 0
Dim intE As Integer = 0
While True
intS = rtb.Text.IndexOf("'"c, intS)
If intS = -1 Then
Exit While
Else
intE = rtb.Text.IndexOf(Chr(10), intS)
If intE = -1 Then
Exit While
Else
rtb.SelectionStart = intS
rtb.SelectionLength = intE - intS
rtb.SelectionColor = System.Drawing.Color.LightGray
intS = intE
End If
End If
End While
End Sub
IndexOfではvbCrLfは検索できませんね、何ででしょう
オブジェクトブラウザで見ると「Chr(10) & Chr(13)」のString型なのに...
RTFを調査してみると幸せになれるかも
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pythonでのstrip()とsplit()の...
-
perlによるxmlファイルの取得
-
sublimit textっていうエディタ...
-
助けてください!
-
「Thanks 4 sending me」←誤文?
-
PHP GDでテキストを含む最小の...
-
Rubyにおける正規表現(一致し...
-
【VB6.0】 あるフォームから他...
-
C#のループでtextboxに値を入れ...
-
二点の座標から距離や角度を求...
-
VB.NETでのイベントの途中終了
-
エクセルVBAでテキストボッ...
-
C言語のサフィックスについて
-
VBAでcallで呼び出したsubを終...
-
他のフォームから別のフォーム...
-
pthread_cond_waitとptherad_co...
-
VC++ (byte)(col & 0xFF) の意味
-
レコードセットにnullの場合
-
C言語で10行10列の行列式の値を...
-
タイムアウトする仕組みを作りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sublimit textっていうエディタ...
-
ExcelのVBAで文章にある複数の...
-
テキストボックスかラベル上の...
-
【VBS】クリップボード操作につ...
-
RichTextBoxで指定行の色を自動...
-
vba 日本語以外を抽出について
-
文字列を配列に…。
-
Pythonのre.split()の正規表現...
-
VBスクリプトでファイルのコピ...
-
文字列を日付型情報として計算...
-
VB6.0 sp5]テキストボックスと...
-
XMLファイルのattribute値がう...
-
VBScript、ClipboardDataオブジ...
-
助けてください!
-
Googleシート「A1」でなくて「A...
-
HTMLのデータ読み取り
-
Visual Basicについてお聞きし...
-
[VB6] SQLの作成について
-
perlによるxmlファイルの取得
-
表の文字の均等割りについて
おすすめ情報