5

新しい WPF コントロールを作成し、それにキャレットを与える必要があります。WINFORMS または以前の Windows UI では、WIN API キャレット関数を使用するのは簡単でしたが、現在の WPF では、各コントロールに hwnd がないため... 方法はありますか?

4

2 に答える 2

3

WPF では、キャレットは実際には CaretElement であり、選択ブロックとキャレットのレンダリングに使用される内部 FrameworkElement です。

キャレット サポートを既に提供している何らかのコントロールを継承せずにそれを操作しようとすると、悲しいことに、それをゼロから実装する必要に直面する可能性があります。

編集

CaretElement はフレームワークの内部にあり、はい、文書化されていません。

たとえば、ここに記載されています。

商用パッケージには、クローズド ソースのカスタム実装が存在します。

于 2009-07-19T21:36:52.240 に答える
1

WPF のキャレットは単なる別のアニメーションであり、そのための特別な API はありません。線を描画し、DoubleAnimation で不透明度を変更します。

WPF TextBox をよく見ると、キャレットは「ピクセルの反転」すら行わず、文字の上に灰色の線が描かれているだけです。

ピクセル シェーダー効果を実装することで、WPF でピクセル反転を実行できる可能性があります。おそらくそれだけの価値はありません。VS2010 ベータ版は、テキスト キャレットの反転を行いません。

TextBox/RichTextBox とは別に、他に 3 つの編集コンポーネントがあります。

  • Expression Blend コード エディター
  • Visual Studio 2010 コード エディター
  • SharpDevelop 4 コードエディター
于 2009-07-19T21:38:19.943 に答える