【问题标题】:set ComboBox selected item when another combobox changes the selected value c#当另一个组合框更改选定值时设置组合框选定项c#
【发布时间】:2018-03-16 10:01:23
【问题描述】:
class ComboBoxCompany
{
    public string Code;
    public string Name;
    public string Database;

    public ComboBoxCompany(string code, string name, string database)
    {
        Code = code;  Name = name; Database = database;
    }

    public override string ToString()
    {
        // Generates the text shown in the combo box
        return Name;
    }
}

class ComboBoxDatabase
{
    public string cmpName;
    public string dbName;

    public ComboBoxDatabase(string cmpname, string dbname)
    {
        cmpName = cmpname; dbName = dbname;
    }

    public override string ToString()
    {
        // Generates the text shown in the combo box
        return cmpName + " - " + dbName;
    }
}

这些是 2 个组合框的类,所以当我选择第一个组合框(ComboBoxCompany)的值时,我希望第二个组合框(ComboBoxDatabase)从第一个组合框“数据库”中选择“dbName”-值-价值

我试过了,还是不行

    private void cbxBranch_SelectedIndexChanged(object sender, EventArgs e)
    {
        cbxDatabase.SelectedItem = (cbxCompany.SelectedItem as ComboBoxCompany).Database;
    }

【问题讨论】:

    标签: c# combobox


    【解决方案1】:

    通过设置 (cbxCompany.SelectedItem as ComboBoxCompany).Database 您尝试将所选项目设置为不“存在”的数据库字符串,因为您似乎添加了一个类作为组合框项。

    您需要将 SelectedItem 设置为真实对象。您可以使用 linq(示例代码)搜索此内容:

    var company = cbxCompany.SelectedItem as ComboBoxCompany;
    if(company == null)
       return;
    var dbItem = _databaseComboBoxItems.FirstOrDefault(x=>x.CompanyName = company.CompanyName && x.Database == company.DatabaseName);
    if(dbItem == null)
      return;
     cbxDatabase.SelectedItem = dbItem;
    

    【讨论】:

    • 你从哪里得到这个列表“_databaseComboBoxItems”?
    • _databaseComboBoxItems 是 ComboBoxDatabase 类型的所有数据类的列表。用它作为说明(简单的数据后端)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多