u013395337
BlackJack1755
采纳率40%
2017-12-08 03:50 阅读 1.8k

C# Winform comboBox模糊匹配出现特别奇怪的问题

如下git所示的一样,控件第一次输入的时候,总是会自动少一个字。而我第二次输入的时候,又是正常的了。从昨天下午到现在一直在看问题,但是在网上找了很久,也没有找到对应问题和解决方案。gif中,上面的我用的是一个控件库里的控件。下面那个是原生的控件。都有一样的问题。
图片说明

以下是Update事件的代码

        private void comboBox_BigscaleUserTest_TextUpdate(object sender, EventArgs e)
        {
            try
            {
                this.comboBox_BigscaleUserTest.Items.Clear();
                List<string> bigUsers = new List<string>();
                foreach (string value in AttributeItems.strs_BigScaleUsers)
                {
                    if (value.Contains(comboBox_BigscaleUserTest.Text))
                    {
                        bigUsers.Add(value);
                    }
                }
                comboBox_BigscaleUserTest.Items.AddRange(bigUsers.ToArray());
                this.comboBox_BigscaleUserTest.SelectionStart = this.comboBox_BigscaleUserTest.Text.Length;
                Cursor = Cursors.Default;
                this.comboBox_BigscaleUserTest.DroppedDown = true;

            }
            catch (Exception ex)
            {
                CommonFunc.PopupErrorMsg("下拉框出错" + ex.Message);
            }
        }

以下是控件的属性设置情况
图片说明
图片说明

            this.chB_BigScaleUsers.BackColor = System.Drawing.Color.Linen;
            this.chB_BigScaleUsers.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.chB_BigScaleUsers.FormattingEnabled = true;
            this.chB_BigScaleUsers.Location = new System.Drawing.Point(87, 228);
            this.chB_BigScaleUsers.Name = "chB_BigScaleUsers";
            this.chB_BigScaleUsers.Size = new System.Drawing.Size(362, 25);
            this.chB_BigScaleUsers.TabIndex = 6;
            this.chB_BigScaleUsers.TextChanged += new System.EventHandler(this.chB_BigScaleUsers_TextUpdate);

如果有知道的小伙伴万望告知

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • philip_li 仙级工程师 2017-12-08 05:42

    你先不要用输入法输入,而是从记事本中复制到这里粘贴,看看有没有少字。
    另外,你看一下这个控件都注册了哪些事件,在TextChanged事件中有没有代码,是否有哪些代码被执行了,而你没有发现。
    我用到过这个控件很多次,但是没有遇到过这种问题。

    点赞 评论 复制链接分享
  • tb612443 tb612443 2017-12-08 06:18

    输入的两字明显第一个字被置空了,调试的时候看一下具体的变化值,看看是否是一个字触发了一次事件,TextChanged正常情况下应该不会这样,

    点赞 评论 复制链接分享
  • huasa2239635117 huasa2239635117 2017-12-08 08:28

    虽然我也没遇到过你这个情况,但根据我的经验,一般遇到特别奇怪的问题时,
    那就是我犯了特别低级的错误了。
    是不是你输入第一个字的时候处于编辑状态,没有获取到

    点赞 评论 复制链接分享
  • zzhilling zzhilling 2018-01-06 08:32

    用 textchange 试一下

    点赞 评论 复制链接分享
  • zzhilling zzhilling 2018-01-06 08:51

    这个问题,一般都自己写个listbox 替代,而不是用它自带的下拉选择框

    点赞 评论 复制链接分享
  • qq_40623154 @386旅独立团团长李云龙 2019-04-30 08:54

    combox中update模糊查询只有在有下拉选框的时候才可以模糊查询,如果没有下面的item选框,输入首字符就会自动将后面的补全并且填充进去,这个应该是update自己隐藏的功能或者其他原因,分析是这个原因,但我还没有找到解决办法

    点赞 评论 复制链接分享

相关推荐