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