c# - WPF组合框在第一个字母输入时自动突出显示

标签 c# .net combobox highlighting

您好,我在 WPF 中有一个 ComboBox

<ComboBox x:Name="Select_Food" Grid.ColumnSpan="3" Margin="10"  Text="" IsEditable="True"  
              ItemsSource="{Binding}" KeyUp="Select_Food_KeyUp" IsTextSearchEnabled="false"  />

当用户在文本框中键入时,我从数据库中获取信息作为选项。目前一切正常,但唯一的问题是,当我在文本框中键入第一个字母时,如果列表中的任何项目以该字母开头,该字母会自动突出显示。因此,任何进一步的输入都会覆盖第一个字母。这是个问题。如何停止此初始突出显示。我正在尝试实现“类似谷歌搜索”的组合框。

这是代码。请帮助。

 // While typing this function is called on every keyup stroke
    private void Select_Food_KeyUp(object sender, KeyEventArgs e)
    {
        try
        {
            SqlCeCommand command = new SqlCeCommand("SELECT FOODITEM_RS FROM FOOD WHERE FOODITEM_RS LIKE @fitem", thisConnection);
            command.Parameters.AddWithValue("@fitem", "%" + Select_Food.Text + "%");
            SqlCeDataAdapter da = new SqlCeDataAdapter(command);
            DataSet ds = new DataSet();
            thisConnection.Open();
            da.Fill(ds, "FOOD");
            Select_Food.ItemsSource = ds.Tables[0].DefaultView;
            Select_Food.DisplayMemberPath = ds.Tables[0].Columns["FOODITEM_RS"].ToString();

        }
        catch (SqlCeException x)
        {
            MessageBox.Show(x.ToString());
        }
        //Open dropdown menu
        Select_Food.IsDropDownOpen = true;

        thisConnection.Close();

    }

最佳答案

我就是这样解决的-

在我的 keyup 事件处理程序中,我添加了以下代码-

    var textbox = (TextBox)cmbBox.Template.FindName("PART_EditableTextBox", cmbBox);
    if (textbox != null && _firstKey && textbox.SelectionLength > 0)
    {
        textbox.Select(textbox.SelectionLength, 0);                
        _firstKey = false;
    }

_firstKey 是我添加的标志。这样,只有在第一次引发此事件时才会取消突出显示,这就是问题所在。允许随后的高亮显示(很可能是用户清除他们键入的内容)并且保持不变。

我从 SelectionLength 开始调用 Select,这样我的光标将停留在用户输入的文本的末尾。我传递的是一个长度为 0 以清除选择。

关于c# - WPF组合框在第一个字母输入时自动突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17250650/

相关文章:

Java Swing : how to render a combobox with different line style?

c# - 对象到 GUID/UUID

c# - 关于Visual Studio 2010内置Web应用程序的问题

c# - WinForms 中的模型 View 展示器

c# - 如何在自己的方法中模仿string.Format()?

c# - datetime2 默认值, Entity Framework

c# - .NET 关于异步套接字操作和消息框架的问题

c# - 使用 API C# 代码在我自己的 channel 中搜索未列出的视频

delphi - 如何通过代码在组合框中分配文本自动选择索引?

C# 奇怪的 WPF 组合框行为