11

行番号を追加する機能を統合したい Multiline richtextbox コントロールがあります。私は多くのアプローチを検討しました

  1. ラベルを追加し、行数の変更に応じて行番号を更新する
  2. 文字列を描画するために、picturebox を追加します。
  3. 一緒に別のテキストボックスを追加し、その上に行番号を表示します
  4. リストボックスを追加し、その中に行番号を表示します。

私は2つの疑問を持っています。

  1. 私が使用しているリッチテキストボックスは、カスタムメイドのコントロールであり、RichTextBox クラスから派生しています。複数のコントロールを追加するにはどうすればよいですか。
  2. C#で複数行のテキストの行番号を表示するための最良の方法は何ですか
4

4 に答える 4

3

私自身の例。すべて問題ありませんが、ワードラップを無効にする必要があります:(

    int maxLC = 1; //maxLineCount - should be public
    private void rTB_KeyUp(object sender, KeyEventArgs e)
    {
        int linecount = rTB.GetLineFromCharIndex( rTB.TextLength ) + 1;
        if (linecount != maxLC)
        {
            tB_line.Clear();
            for (int i = 1; i < linecount+1; i++)
            {
                tB_line.AppendText(Convert.ToString(i) + "\n");
            }
            maxLC = linecount;
        }
    }

ここで、rTB は私のリッチテキスト ボックスで、tB は rTB の隣のテキスト ボックスです

JTジュニア

于 2010-08-25T16:50:28.747 に答える
2

このコードは、ありがとうございました。Visual Basic を変換する必要がありましたが、次のことができました。

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
    Dim maxlc As Integer = 1
    Dim linecount As Integer = TextBox1.GetLineFromCharIndex(TextBox1.Height) + 1

    If linecount <> maxlc Then
        TextBox2.Clear()
        For i = 0 To linecount - 1 Step 1
            TextBox2.AppendText(Convert.ToString(i) + vbNewLine)
        Next i
        maxlc = linecount
    End If
End Sub
于 2011-08-25T20:42:33.157 に答える
1

100%動作します!!! ただし、リストボックスなどの他の形式に変更する場合は、行番号に richTextBox2 を追加する必要がありますが、とにかくうまく機能しました。

    private void richTextBox1_keyDown(object sender, KeyEventArgs e)
    {

        for (int i = 0; i <= richTextBox1.Lines.Count(); i++)
        {
            if (!(e.KeyCode == Keys.Back))
            {
                if (!richTextBox2.Text.Contains(i.ToString()))
                {
                    richTextBox2.Text += i.ToString() + "\n";
                }
            }
            else
            {
                richTextBox2.Clear();
            }
        }    
    } 
于 2014-11-15T15:00:07.730 に答える