i like food Ответов: 2

Сделайте так, чтобы текстовое поле WPF принимало клавишу enter.


У меня есть текстовое поле в WPF для получения информации и где кто-то может делать заметки.
Пользователь может писать в нем, сохранять его и т. д. Но по какой-то причине текстовое поле не будет принимать клавишу enter во время работы приложения.
Если вы наберете достаточно символов, чтобы добраться до конца текстового поля, будет создана новая строка, но она не будет создана, если вы нажмете enter.

это XAML для моего текстового поля.

<TextBox x:Name="___informationBox_" HorizontalAlignment="Left" Height="326" Margin="358,40,0,0" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Top" Width="432" Text="Logarithms are used to find the powers of numbers. 

They are also used in the Richter scale, the PH scale, and the Decibel scale. 

A logarithm is written like this: 

log a(b) = c

Where a is the base, b is the product, and c is the power in an exponential expression. 

the above is converted to an exponential expression like this:

a^c = b

THE LOG LAWS:

The log laws. 

log law 1:
log A + log B = log AB

log law 2:
log A - log B = log A/B

log law 3: 
log A^n = n log A

The change of base formula: log b C = (log a C) / (log a B)

" Grid.ColumnSpan="2"/>



Так как же это можно исправить?

Что я уже пробовал:

Я искал в интернете что-то, что может это исправить, но не нашел.

2 Ответов

Рейтинг:
6

jimmson

Попробовать это: Многострочный для текстового поля WPF - переполнение стека[^]

Первый ответ объясняет, что нужно установить:

TextWrapping="Wrap"
AcceptsReturn="True" 


i like food

Чем вы оба, это очень полезные ответы.

Рейтинг:
18

dnxit

вы можете сделать это на событии KeyDown, например

<StackPanel>
  <TextBlock Width="300" Height="20">
    Type some text into the TextBox and press the Enter key.
  </TextBlock>
  <TextBox Width="300" Height="30" Name="textBox1"

           KeyDown="OnKeyDown"/>
  <TextBlock Width="300" Height="100" Name="textBlock1"/>
</StackPanel>



Следующий код создает обработчик событий KeyDown. Если нажата клавиша Enter, появится сообщение, и вы увидите добавленную новую строку.

private void OnKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
       {
		MessageBox.Show($"You entered : {textBox1.Text}");
		var sb = new StringBuilder();
		sb.Append(textBox1.Text);
		sb.AppendLine("");
		textBox1.Text = sb.ToString();
		textBox1.CaretIndex = textBox1.Text.Length;
	}
}