2

AvalonEdit で、Visual Studio と同様の「仮想空間」機能を実現したいと考えています。

つまり、キャレットはテキスト行の末尾を超えて配置でき、任意のキーを押すと、一致するようにスペースが自動的に追加されます。

私はこの機能に非常に慣れていますが、Google で検索しても AvalonEdit のコードを調べても、サポートされている場合に有効にする方法の手がかりが得られませんでした。

そうでない場合は、キャレット処理メカニズムを拡張する方法を提案してください。

ありがとう!

4

1 に答える 1

4

編集: 仮想空間のサポートは、バージョン 4.2.0.8283 でAvalonEdit に追加されました。設定しtextEditor.Options.EnableVirtualSpace = true;ます。

以下は私の元の答えです。


現在サポートされていません。

追加してみたい場合は、「座標系」のドキュメント (CodeProject のヘルプ ファイル内) を必ずお読みください。行末の後の位置が有効になるように、「ビジュアル列」を拡張する必要があります。そして、position<->column の計算 (VisualLine.GetVisualColumn など) を調整する必要があります。TextView.WideSpaceWidth を使用して、行末を超える列を把握します。

上記により、マウスを使用してキャレットを仮想空間に配置できるようになります。その後、キャレットの移動 (矢印キー、CaretNavigationCommandHandler) とテキスト入力ロジック (TextArea.PerformTextInput) を変更して、仮想空間もサポートする必要があります。

上記の手順が成功したら、変更を AvalonEdit に戻すことを忘れないでください。:-) 私自身は仮想空間のファンではありませんが、RectangleSelection を適切に機能させるには、仮想空間のようなものが必要です。

于 2011-02-09T10:32:57.060 に答える