gpt4 book ai didi

c# - ComboBox DropDown 打开时不选择文本输入

转载 作者:行者123 更新时间:2023-11-30 16:03:27 25 4
gpt4 key购买 nike

我的 WPF 应用程序中有一个 ComboBox,我想在其中输入文本,用于更新 ComboBox 的内容(项目)。

每当我输入一个字符时,我都希望显示更新的项目。所以我设置了 IsDropDownOpen = true;,但这会导致选择输入的文本。

结果是:我键入 1 个字符,ComboBox DropDown 打开(并显示新项目),字符被选中。我输入了第二个字符,它替换了第一个字符,因为它被选中了 (duh)!

如何取消选择 ComboBox 中的所有文本?我显然想输入超过 1 个字符,而不必再次单击 ComboBox 以取消选择所有文本...

代码:

//MainWindow.xaml
<ComboBox x:Name="comboBoxItemID" HorizontalAlignment="Left" Height="38"
VerticalAlignment="Top" Width="300" Canvas.Left="197" FontSize="21.333"
IsEnabled="True" KeyUp="comboBoxItemID_KeyUp" IsEditable="True"/>

//comboBoxItemID_KeyUp()
List<InventorySearchResult> Items = Invent.SearchArticle(this.comboBoxItemID.Text); //Get new Data
comboBoxItemID.ItemsSource = Items; //Update comboBox Data
comboBoxItemID.DisplayMemberPath = "Name";
comboBoxItemID.IsDropDownOpen = true;

最佳答案

要取消选择 ComboBox 中的所有文本,首先获取 TextBox 元素:

TextBox tb = (TextBox)comboBoxItemID.Template.FindName("PART_EditableTextBox", comboBoxItemID);

(来源:How to get ComboBox.SelectedText in WPF)

然后使用TextBox方法Select(int start, int length)设置选择,例如

tb.Select(tb.Text.Length, 0);

(来源:Deselect text in a textbox)

最后,禁用 IsTextSearchEnabled 属性。我没有做太多测试来找出为什么必须禁用它,但我想在我的情况下它与我更新项目然后取消选择文本的方式冲突。

关于c# - ComboBox DropDown 打开时不选择文本输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36356774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com