【问题标题】:C# ComboBox in DropDownList style, how do I set the text?DropDownList 样式的 C# ComboBox,如何设置文本?
【发布时间】:2009-02-07 23:07:16
【问题描述】:

我想使用具有 DropDownList 样式的 ComboBox(使它看起来像一个按钮,因此您无法输入值)将值插入文本框。我希望组合框有一个名为“通配符”的文本标签,当我从列表中选择一个通配符时,所选值被插入到一个文本框中,组合框文本仍然是“通配符”。我的第一个问题是当组合框为 DropDownList 样式时,我似乎无法设置文本值。使用属性托盘不起作用,当您单击关闭时,文本值会被简单地清除,添加 comboBox.Text = "Wildcards";到 form_load 也不起作用。有人可以帮忙吗?

【问题讨论】:

    标签: c# .net combobox


    【解决方案1】:

    您指定的代码:

    comboBox.Text = "Wildcards";
    

    ...应该可以工作。它不会的唯一原因是您指定的文本不是组合框项目列表中的项目。使用 DropDownList 样式时,只能将 Text 设置为实际出现在列表中的值。

    如果您尝试将文本设置为通配符并且该项目未出现在列表中,并且替代解决方案不可接受,您可能不得不对代码有点脏并添加下拉列表展开时临时删除的项目。

    例如,如果您的表单包含一个名为“comboBox1”的组合框,其中包含一些项目和一个名为“button1”的按钮,您可以执行以下操作:

    private void button1_Click(object sender, EventArgs e)
    {
        if (!comboBox1.Items.Contains("Wildcards"))
        {
            comboBox1.Items.Add("Wildcards");
        }
    
        comboBox1.Text = "Wildcards";
    }
    
    private void comboBox1_DropDown(object sender, EventArgs e)
    {
        if (comboBox1.Items.Contains("Wildcards"))
            comboBox1.Items.Remove("Wildcards");
    }
    

    这非常快速和肮脏,但是通过捕获 DropDownClosed 事件,您可以稍微清理一下,根据需要添加“通配符”项目。

    【讨论】:

    • 谢谢你,我从 blackwasp 网站学到了很多我的 C#,我仍然参考它。谢谢!
    • 奇怪的是,在表单设计器中设置“文本”属性是不够的——在我的例子中,它必须在后面的代码中设置。尝试从表单属性窗口设置它只会在单击“文本”属性后清除它。
    • 您可以使用“!通配符!”来代替“通配符”。感叹号应该强制它成为排序列表中的第一项(无论如何都是文本),它看起来更像是列表的标题(我喜欢使用“!选择项目!”,因为它通知 OP 进行选择。
    【解决方案2】:

    您可以在表单加载或表单构造函数中选择一项:

    public MyForm()
    {
        InitializeComponent();
    
        comboBox.SelectedIndex = 0;
    }
    

    private void MyForm_Load(object sender, EventArgs e)
    {
        comboBox.SelectedIndex = 0;
    }
    

    【讨论】:

    • 你也可以使用 comboBox.SelectedIndex = -1;清理 comboBox.Text.
    【解决方案3】:

    试试这个

    comboBox1.SelectedValue = "Wildcards";
    

    【讨论】:

      【解决方案4】:

      这可能是一个可能的解决方案:

      comboBox1.SelectedValue = comboBox1.Items.FindByText("Wildcards").Value;
      

      【讨论】:

        猜你喜欢
        • 2014-11-11
        • 1970-01-01
        • 2013-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-17
        • 2023-03-07
        相关资源
        最近更新 更多