防止WPF文本框显示在多行上
我有一个WPF文本框,用于接受搜索词,并在用户点击Enter键(文本框处于焦点)时使用该搜索词 由于无法解释的原因,该文本框允许输入多行文本 我已将防止WPF文本框显示在多行上,wpf,word-wrap,Wpf,Word Wrap,我有一个WPF文本框,用于接受搜索词,并在用户点击Enter键(文本框处于焦点)时使用该搜索词 由于无法解释的原因,该文本框允许输入多行文本 我已将TextWrapping设置为NoWrap并将MaxLines设置为1。关联的事件处理程序指示它在Environment.NewLine终止文本时处理事件 除了包装外,其他一切都正常工作。如何防止文本换行 <TextBox Height="23" Margin="24,1,12,0" Name="txtSearch" VerticalAlign
TextWrapping
设置为NoWrap
并将MaxLines
设置为1
。关联的事件处理程序指示它在Environment.NewLine终止文本时处理事件
除了包装外,其他一切都正常工作。如何防止文本换行
<TextBox Height="23" Margin="24,1,12,0" Name="txtSearch" VerticalAlignment="Top" TextWrapping="NoWrap" Visibility="Visible" MinWidth="50" LostFocus="txtSearch_LostFocus" AcceptsReturn="True" TextChanged="txtSearch_TextChanged" MaxLines="1" />
private void txtSearch_TextChanged(object sender, TextChangedEventArgs e)
{
if (txtSearch.Text.EndsWith(Environment.NewLine))
{
string search = txtSearch.Text.Replace(Environment.NewLine, string.Empty);
e.Handled = true;
MainViewModel vm = (MainViewModel)this.FindResource("viewModel");
vm.SearchText = search;
}
}
私有void txtSearch_TextChanged(对象发送者,textchangedventargs e)
{
if(txtSearch.Text.EndsWith(Environment.NewLine))
{
string search=txtSearch.Text.Replace(Environment.NewLine,string.Empty);
e、 已处理=正确;
MainViewModel vm=(MainViewModel)this.FindResource(“viewModel”);
vm.SearchText=搜索;
}
}
你是说当你点击回车键时它会自动换行吗?或者当文本变得太长时
您有
AcceptsReturn=“True”
,这意味着用户可以使用文本框内的Enter键创建换行符。尝试将其设置为False。设置AcceptsReturn
为False,而不是true。将其设置为true意味着它是可接受的文本输入。您可以使用previewkeydown或previewkeyup事件,而不是使用文本更改事件
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
e.Handled = true;
// handle search here
}
else
{
// do some thing
}
}
我希望enter键使搜索开始(即触发我的事件处理程序,而不是传递给表单)。但是,我想阻止该输入到达文本框。我认为通过指示事件已被处理,这将发生。当按下Enter键时,如何触发事件处理程序,但阻止输入到达文本框?@Eric J。您可以将事件连接到文本框的
PreviewKeyDown
,如果按下的键是Enter键,则可以处理搜索。