0

行番号付けのコードを取得しました。通常の方法で行番号を付けるのに問題なく機能しますが、少し違うものを探しています。Enter キーを押したときにコードで改行のみをカウントし (プログラムがリターン キーコードを受け取る)、テキスト ボックスがワード ラップで行を自動的にカットしないようにします。これは私が今使っているコードです:

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

私が最も簡単にできると思う方法は、誰かがリストにEnterキーを押すたびに行数を保存し、誰かがEnterキーを押すたびに、リストに記載されている位置のすべての行番号で行番号テックスボックスを更新することです. しかし、返品がいつ削除されたかを検出する方法がわかりません。誰でもこれを解決する方法を知っていますか?

4

1 に答える 1

0

投稿したコードの行数をカウントする非常に基本的な例:

    class Program
    {
        static void Main(string[] args)
        {
            string stringFromTextBox = 
@"  int maxLC = 1; //maxLineCount - should be public
    private void InstructionsSyncTextBox_KeyUp(object sender, KeyEventArgs e)
    {
        int linecount = InstructionsSyncTextBox.GetLineFromCharIndex(InstructionsSyncTextBox.TextLength) + 1;
        if (linecount != maxLC)
        {
            InstructionsLineNumberSyncTextBox.Clear();
            for (int i = 1; i < linecount + 1; i++)
            {
                InstructionsLineNumberSyncTextBox.AppendText(Convert.ToString(i) + ""\n"");
            }
            maxLC = linecount;
        }
    }";
            Regex r = new Regex("\r", RegexOptions.Multiline);
            int lines = r.Matches(stringFromTextBox).Count;
            //You'll need to run this line every time the user presses a key

        }
    }
于 2013-02-28T03:54:58.123 に答える