我有一个行编号的代码,它对常规方式的编号行完全正常,但我正在寻找一些不同的东西。我希望我的代码只能在按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;
}
}
我认为我最简单的方法就是每当有人按下输入列表时保存行数,每次有人按下输入时都会更新行号,并在列表中的位置更新行号。但我不知道如何检测返回何时被删除。有谁知道如何解决这个问题?
答案 0 :(得分: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
}
}