【问题标题】:ComboBox item doesn't update even if case is changed即使更改大小写,ComboBox 项目也不会更新
【发布时间】:2012-05-02 08:51:56
【问题描述】:

我有一个带有组合框、文本框和按钮的基本表单。组合框中的项目数量不可更改,但可以通过为所选项目输入新值来更改项目本身。

从图中的示例中,如果我输入了一个字符串,例如“标识符”,则组合框中的选定项从“ID”变为“标识符”,正如预期的那样。但是,如果我输入“id”,逻辑(如下)正常执行,项目更新,但在视觉上,项目不会从“ID”变为“id”。

这里是按钮事件处理程序的代码

private void btnApply_Click(object sender, EventArgs e) {

    string newValue = txtNewName.Text;

    if(string.IsNullOrWhiteSpace(newValue)) {
        MessageBox.Show("Please input a new column name");
        return;
    }

    if(cmbHeaderNames.Items.Contains(newValue)) {
        MessageBox.Show("A column with that name already exists");
        return;
    }

    cmbHeaderNames.Items[cmbHeaderNames.SelectedIndex] = newValue;

    txtNewName.Text = "";

}

【问题讨论】:

  • 我相信您想使用 BindingList<T> 作为 DataSource 来执行此操作。

标签: c# winforms combobox


【解决方案1】:

我相信 ComboBox 正在做一些字符串比较,因为以下代码示例有效。

if (comboBox1.SelectedItem.ToString().ToUpper() == textBox1.Text.ToUpper())
{
     comboBox1.Items[comboBox1.SelectedIndex] = string.Empty;
     comboBox1.Items[comboBox1.SelectedIndex] = textBox1.Text;
}

显然,如果在应用 ToUpper() 或 ToLower() 时两个字符串值不相同,则更新成功。

【讨论】:

    猜你喜欢
    • 2019-04-22
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多