【问题标题】:combobox event & clear method组合框事件和清除方法
【发布时间】:2017-06-23 14:01:29
【问题描述】:
   private void ComboBox1_TextChanged(object sender, EventArgs e)
    {
        ComboBox1.Items.Clear();
        XmlNodeList node_lst = doc["paths"].ChildNodes;
        foreach (XmlNode item in node_lst)
        {
            if (item.InnerText.Contains(ComboBox1.Text))
            {
                ComboBox1.Items.Add(item.InnerText);
            }
        }            
    }

我是这个网站的新手,当我从组合框中清除项目时,我对这个事件有疑问,我从 xml 文件中获取这些项目;我的问题是当我在组合框文本中输入字母时,文本以相反的方式输入,我预计问题是清晰的方法,但我不知道如何做到这一点。 谢谢。

【问题讨论】:

  • 请问“文本以相反的方式输入”是什么意思?你的意思是从右到左出现?
  • 尝试创建一个字符串,然后将该字符串插入组合框
  • 你调试了吗?您确定您从 xml 读取的项目不是单个字符吗?
  • 感谢我所做的每一个人 comboBox1.SelectionStart = comboBox1.Text.Length;它运行正确

标签: c# winforms window


【解决方案1】:

当您从ComboBox 中删除所有项目时,光标将被设置到第一个位置。因此,在您键入每个字符后,光标将向左移动,您会有从右到左打字的感觉.

解决方案是手动将 for 循环后的 SelectionStart 设置到 Text 的末尾:

comboBox1.SelectionStart = comboBox1.Text.Length;

【讨论】:

    【解决方案2】:

    我猜你想要这样的东西:

    var nodeList = node_lst.Cast<XmlNode>()
                                   .Select(x => library.GetMemberName(int.Parse(x.InnerText)))
                                   .ToList();
    nodeList.Reverse();
    

    更多信息Reverse(): https://msdn.microsoft.com/en-us/library/b0axc2h2(v=vs.110).aspx

    【讨论】:

    • 谢谢你我试试 comboBox1.SelectionStart = comboBox1.Text.Length;它运行正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2012-09-23
    • 1970-01-01
    • 2012-09-03
    相关资源
    最近更新 更多