Я попытался ответить по соображениям, это не сработало точно так, как я хотел.
Сначала событие KeyDown не дало никаких результатов, похоже, что при нажатии клавиши Enter событие KeyDown не 'т и не дает никаких результатов.поэтому вместо этого я использовал событие PreviewKeyDown, которое работает.
Во-вторых, оно не записывало номер строки для первой строки.Также для последующих чисел он создает число в новой строке, а затем перемещает курсор на другую строку, чтобы эффект был следующим:
некоторый текст
2
некоторый текст
3
некоторый текст
и так далее.
результат, который я хочу получить, я хочу, чтобы он был таким:
1-некоторый текст.
2-некоторый текст.
3-некоторыйtext.
, поэтому я изменил код, предоставленный Computhos, который дал мне правильные результаты.Вот код, который я использовал:
После создания TextBox в xaml и создания события 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;
}
}
}