0

RichTextBox_TextChangedイベントの下で、私は持っています

   if RichTextBox.Lines.Count() > 2
   {
      //Message Box to display the user that you are typing more than 2 lines
    }

だから私が起こるのは、私がこれらのデータを持っているときです

 [0] - "East coast road"
 [1]- "New York"

リッチ テキスト ボックス、Enter をクリックすると、この状態になるようです

   [0] - "East coast road"
   [1]- "New York"
   [2] -""  

そして、2 行を超えることはできないというメッセージのポップアップ ボックスが表示されますが、最後の行は単なる空行ですか?

リッチ テキスト ボックスの行制限を処理するにはどうすればよいですか? または、ユーザーが Enter キーを押したときに次の行に移動せず、リッチ テキスト ボックスに 1 行ある場合にのみ次の行に移動するようにするにはどうすればよいですか?

これは count を 3 として返しますが、そこには 2 しかありません。次の行の空白を削除するにはどうすればよいですか?

4

2 に答える 2

1

利用可能なタグを散弾銃で撃ったようなものです。しかし、これはあなたにそれを行う方法のアイデアを与えるはずです. このKeyDownイベントは、TextChanged イベントの前に発生します。したがって、キーストロークをインターセプトし、Enter キーをチェックして、行数が 2 以上の場合はそれを処理します。この C# winforms の例のようなもの:

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && richTextBox1.Lines.Length >= 2)
        e.Handled = true;
}

Handled物件に関するご質問にお答えするため。

リンクから:

Handled は、Windows フォーム内のさまざまなコントロールによって異なる方法で実装されます。ネイティブ Win32 コントロールをサブクラス化する TextBox などのコントロールの場合、キー メッセージを基になるネイティブ コントロールに渡してはならないことを意味すると解釈されます。TextBox で Handled を true に設定すると、そのコントロールは基になる Win32 テキスト ボックス コントロールにキー プレス イベントを渡しませんが、ユーザーが入力した文字は引き続き表示されます。

于 2012-06-01T01:56:56.853 に答える
0

これを試して

String[] myLines = RichTextBox.Text.Split("\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)

これにより、テキストが改行で分割され、空のスペースがすべて削除されます。最後の空白行だけでなく、その間の空白行も削除されることに注意してください。

または、この方法を使用できます

int lCount = RichTextBox.Lines.Count();
if(String.IsNullOrEmpty(RichTextBox.Lines[lCount-1]))
    lCount--;

if lCount > 2
{
  //Message Box to display the user that you are typing more than 2 lines
}
于 2012-06-01T02:50:59.007 に答える