0

私は.NET 4.0を使用していますが、これは2.0でも発生します...

私の意見では、MultiLine モードの RichTextBox は、そのようにテキスト行を選択すべきではありません。

コントロールで、次のように、中央に少なくとも 1 行の空行を含む複数行のテキストを入力します。

素早い茶色のキツネ
が怠け者の犬を飛び越えます。オレンジよりもリンゴを

好む人が多い。

挿入ポイントを先頭 ("The" の前) に配置し、キーボードの下矢印キーを使用して最初の 2 行を選択できるはずです。その下の空白行は含まれませんが、空白行は含まれます左矢印キーを押して空白行の選択を解除するのは大したことではないことはわかっていますが、それ煩わしく、さらに、他のアプリケーションや TextBox コントロールと同様に機能するはずです。

コントロールのプロパティを調べたところ、何も見つかりませんでしたが、おそらく 1 つあり、その名前がわかりません。

この動作を自分で書く必要がありますか?

ありがとう。

4

1 に答える 1

0
bool HasIgnoredSelection { get; set; }

HasIgnoredSelection = false;

rtb.KeyUp += (e) => {
     int cursorIndex = rtb.SelectionStart + rtb.SelectionLength;
     bool isBlankLineSelection = e.Shift 
         && e.KeyCode == Keys.Down 
         && rtb.Lines[rtb.GetLineFromCharIndex(cursorIndex)] == Environment.NewLine;

     if (!HasIgnoredSelection 
         && isBlankLineSelection) 
     {
        rtb.SelectionLength -= Environment.NewLine.Length;
        HasIgnoredSelection = true;
     }
     else if (isBlankLineSelection)
     {
        HasIgnoredSelection = false;
        rtb.SelectionLength += Environment.NewLine.Length;
     }
     else 
     {
        HasIgnoredSelection = false;
     }
};

もちろん、これはあなたが話していたハックな方法ですが、これがあなたが望むものであるかどうかはわかりません. 下キーを押したままにしない限り、キーボードでテキストを選択し続けることができなくなるため、他の方法でこれに取り組むことができます。

編集:空白行の後の行にジャンプするために2回押す機能を追加しました

于 2013-04-07T00:09:27.697 に答える