ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-03 18:56:02  阅读:293  来源: 互联网

标签: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 start,这样我的光标将保留在用户输入的文本的末尾.我传递的长度为0以清除选择.

标签:c,net,combobox,highlighting
来源: https://codeday.me/bug/20190703/1369278.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有