可変長のメッセージを表示し、テキストを選択できるようにする必要があります。テキストの編集を許可しない TextBox ReadOnly を作成しましたが、入力キャレットは引き続き表示されます。
点滅する入力キャレットは紛らわしいです。どうすれば非表示にできますか?
win32 呼び出しで実行できます
[DllImport("user32.dll")]
static extern bool HideCaret(IntPtr hWnd);
public void HideCaret()
{
HideCaret(someTextBox.Handle);
}
win32 呼び出しを使用する場合は、テキスト ボックスの GotFocus イベントでカーソルを非表示にすることを忘れないでください。
テキスト ボックスを無効にしても ( set Enable=false
)、その中のテキストはスクロールおよび選択可能です。無効なテキスト ボックス (通常は灰色の背景) の視覚的な表示が気に入らない場合は、手動で色をオーバーライドできます。
色を手動でオーバーライドすると、デフォルトの色/テーマ設定を使用しないシステムでフォーム/コントロールが奇妙に見えることに注意してください。自分のコントロールが白だからといって、全員のコントロールが白になると思い込まないでください。. _ System.Drawing.SystemColors
_SystemColors.ControlLight
これは古いスレッドであることは知っていますが、参考になります。
私は、フォームへのユーザーのアクセスをどれだけ制御できるかに依存する、はるかに簡単だが非常に厄介なソリューションで問題を解決しました。主要な tabIndex 値を指定したテキスト ボックス (フォーカス可能なコントロール) を追加し、表示されないようにオフフォームに配置しました。ユーザーはサイズを変更できないため、これはダイアログでうまく機能します。フォームがサイズ変更可能な場合、これは機能しない可能性があります。
私が言ったように、クラッジですが、セットアップははるかに簡単です。(ところで、HideCaret アプローチが機能しないことがわかりましたが、一生懸命追求しませんでした。)
私の知る限り、これはできません。TextBox コントロールは面白いコントロールです。実際には、オペレーティング システムを利用する方法が原因で変更できない多くの動作が含まれているからです。これが、クールなカスタム TextBox の多くがゼロから作成された理由です。
あなたがやりたいことをすることができないかもしれないのではないかと心配しています:(