我经历过这些,但他们在我的情况下并没有帮助我
这在我的情况下不起作用,因为它在答案中包含KeyData或KeyCode方法,当我尝试运行时显示错误。 How to add number in each new line in a multiline textbox C# / ASP.net
我试过这个在我的情况下不起作用,因为它在按下按钮时使用 Adding new line of data to TextBox
这个只是添加一些字符串,如第一,第二,第三,这就是,这对我的情况没有帮助。 https://www.codeproject.com/Questions/320713/Adding-new-line-in-textbox-without-repalcing-exist
我在Google上搜索了20个搜索结果,其中许多搜索结果不相关,而其他搜索结果对我的情况没有帮助。
答案 0 :(得分:0)
如果我理解这个问题,你想在文本框中添加每个新行的行号。要做到这一点,您需要在视图中使用TextBox
事件添加KeyDown
<TextBox KeyDown="TextBox_KeyDown" x:Name="txtBox" />
然后,在视图的代码隐藏中,您可以检查键是&#34;输入&#34;键并将行号添加到文本
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
string txt = txtBox.Text;
int lineNumber = txt.Split('\n').Length + 1;
txtBox.Text += '\n' + lineNumber.ToString();
txtBox.CaretIndex = txtBox.Text.Length;
}
}
备注强>
txtBox.CaretIndex = txtBox.Text.Length;
在编辑后将插入符号放在文本的末尾。否则,当您按Enter键时,插入符将重置为文本的开头。修改强>
如果使用AcceptsReturn
的{{1}}属性,则事件TextBox
由TextBox直接处理,并且注释冒充父母。在这种情况下,您必须使用KeyDown
事件,请参阅MSDN Routing Strategies
答案 1 :(得分:0)
我通过computhoms尝试了答案它并没有按照我想要的方式工作。
首先,KeyDown事件没有生成任何结果,似乎按下Enter键时KeyDown事件不会触发,也不会生成任何结果。 所以我使用的PreviewKeyDown事件起作用。
其次,它没有写第一行的行号。同样对于后续数字,它会在新行中创建数字,然后将光标移动到另一行,因此效果将如下:
一些文字
2
一些文字
3
一些文字
等等。
我想要的结果是我希望它是这样的:
1-some text。
2-some text。
3-some text。
所以我修改了Computhos给出的代码,它给了我正确的结果。 这是我使用的代码:
在xaml中创建TextBox并像这样创建PreviewKeyDown事件
<TextBox PreviewKeyDown="LifeGoalsTextBox_PreviewKeyDown" x:Name="LifeGoalsTextBox" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
我去了后面的代码并编写了这段代码:
private void LifeGoalsTextBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
string txt = LifeGoalsTextBox.Text;
int lineNumber = txt.Split('\n').Length ;
string lineNumberString = lineNumber.ToString();
if (lineNumber == 0)
{
LifeGoalsTextBox.Text = LifeGoalsTextBox.Text.Insert(0, "1") + '-';
}
else
{
lineNumber++;
int lastLine = 1 + LifeGoalsTextBox.Text.LastIndexOf('\n');
LifeGoalsTextBox.Text = LifeGoalsTextBox.Text.Insert(lastLine, lineNumberString+ '-') ;
LifeGoalsTextBox.CaretIndex = LifeGoalsTextBox.Text.Length;
}
}
}