2009-06-27 43 views
5

TextBox内のキャレットの位置を知る必要があるため、その近くにコンテキストメニューが表示されます。その配置(文字インデックスではない)を見つけるにはどうすればよいですか?TextBoxでのキャレットの位置の特定

答えて

6

が見つかりました。this articleが見つかりました。あなたは、PlacementRectangleをGetRectFromCharacterIndexからテキストボックスの両方のPlacementTargetに設定することができます。

+0

_RichTextBox_:richTextBox.CaretPosition.GetCharacterRect(LogicalDirection.Forward) 'で同じことをする方法が不思議なら、 – JobaDiniz

1

チェックアウトthis example

+0

私はユーザータイプ(intellisenseのようなもの)として、単純にデフォルトのコンテキストメニューを置き換えるのではなく、キャレットの近くにコンテキストメニューをポップアップしたいと思います。 – RandomEngy

0

カラットの文字インデックスを取得してから、それをピクセル座標に変換する必要があると思います。これは、カラットの左側にあるテキストでTextRenderer.MeasureText()を呼び出します。 TextBoxが複数行の場合、これは明らかに複雑になります。それは...ですか?

+0

それは幸運にも一行です。私は測定テキストのものにショットをつけます。 – RandomEngy

+0

TextRenderer.MeasureText()は、WPFではなくWinFormsのように見えます。私はWPFと同等のものを見つけましたが、コンテキストメニューのアンカーポイントを計算するために必要なTextBoxの位置を取得するのが難しいです。 WPF。 – RandomEngy

+0

ああ、WPF。 WPFタグを使用したにもかかわらず、おそらくこの種の情報を質問に含めるべきです。 – Fantius

関連する問題