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 键时它都会使用列表中所述位置的每个行号更新行号 texbox。但我不知道如何检测退货何时被删除。有谁知道如何解决这个问题?

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 回答