• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.net キャレットの幅の変更をしたい)

VB.netのリッチテキストボックスでキャレットの幅を変更する方法

このQ&Aのポイント
  • VB.netのリッチテキストボックスでキャレットの幅を変更する方法について調査しました。リッチテキストボックスにフォーカスが当たった時にキャレットの幅を変える処理を行いましたが、一度だけフォーカスが当たった時に一瞬だけ四角いキャレットが表示された後、すぐにI型に戻ってしまいました。
  • 現在の実装では、CreateCaret関数を使用してキャレットを作成し、ShowCaret関数でキャレットを表示しています。しかし、この方法ではうまくキャレットの幅を変更することができませんでした。
  • この問題について、他の解決策やヒントをご存知の方がいらっしゃいましたら、教えていただけると助かります。どうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

プロシージャを抜けると作成されたキャレットが破棄されるように仕様が変更されたようで RichTextBox1_Enter イベントで作成するとすぐにRichTextBox1_GotFocus イベントが発生し その時点で破棄されるので、一瞬しか確認できないのです。 どうしてもなら、RichTextBox1_GotFocus イベントで作成すると次のイベントが発生するまでは 破棄されませんので表示されるようになります。 但しキー入力やマウスダウンイベントが発生すると破棄されるので、キーアップイベントと マウスアップイベントにも書いておく必要があります。 (ダウン イベント書くと直後にアップ イベントが発生するのですぐに破棄される事になり表示されません) テキストボックスとRichTextBox とその辺の仕様が違う理由については、よく知りません(調べていない)

Raio77
質問者

お礼

ありがとうございます。 テストした結果、vbhanatyanさんの仰るとおりのようです。 今回はキャレットの変更は諦めます^^; それにしても、なんでこんな仕様に変更したのか・・・