winforms 按值选择组合框项C#

nkoocmlb  于 2022-11-30  发布在  C#
关注(0)|答案(5)|浏览(221)

我有一个组合框,绑定到Datatable,并具有以下属性:

cboCars.DisplayMember = "carLiscen";
cboCars.ValueMember = "carNo";

如果我知道ValueMember,如何选择DisplayMember

l5tcr1uw

l5tcr1uw1#

如果有ValueMember集合,则可以使用SelectedValue进行选择

cboCars.DisplayMember = "carLiscen";
cboCars.ValueMember = "carNo";

cboCars.SelectedValue = "valuemember value";
5hcedyr0

5hcedyr02#

你可以使用cboCars.SelectedValue = "123";属性来实现这个功能。下面是一个代码片段,它将展示它的实际操作。

public void Test()
    {
        ArrayList info = new ArrayList();
        info.Add(new CarInfo { CarLiscen = 123456, CarNo = 123});
        info.Add(new CarInfo { CarLiscen = 234567, CarNo = 234 });
        cboCars.DataSource = info;

        cboCars.DisplayMember = "CarLiscen";
        cboCars.ValueMember = "CarNo";

        cboCars.SelectedValueChanged +=
            delegate(object sender, EventArgs e)
            {
                if (cboCars.SelectedIndex != -1)
                {
                    this.Text = cboCars.SelectedValue.ToString();
                }
            };

        cboCars.SelectedValue = 234;
    }

如果你想知道CarInfo的定义是什么,下面是它的代码(非常简单):

public class CarInfo
{
    public int CarLiscen { get; set; }
    public int CarNo { get; set; }
}

希望这对你有帮助。

kkbh8khc

kkbh8khc3#

您可以搜索正确的项目并将其设置为该项目,非常简单:

cbTEST.SelectedIndex = cbTEST.FindStringExact("your search string here");

或基于ListViewItem选择一个项目:

cbTEST.SelectedIndex = cbTEST.FindStringExact(lvTEST.SelectedItems[0].SubItems[0].Text);

就是这样,非常简单!

ttisahbt

ttisahbt4#

如果要搜索文本或值,最好的方法是

int Selected;    
int count = ComboBox1.Items.Count;
    for (int i = 0; (i<= (count - 1)); i++) 
     {        
         ComboBox1.SelectedIndex = i;
        if ((string)(ComboBox1.SelectedValue) == "SearchValue") 
        {
            Selected = i;
        }

    }

    ComboBox1.SelectedIndex = Selected;
kzipqqlq

kzipqqlq5#

问题是组合框需要精确的类型。(int),您将它传递给combo的SelectedValue属性。但实际上,您传递的不是整数,而是对象。这通常是错误的地方。需要一段时间来解决这个问题,但最后我找到了解决的方法......怎么解决这个......简单:
例如,您有一个ID(数据库中的整数),则需要执行以下操作:
这是我做的一个,它不工作:数据列[intRowSelected]。储存格[3]。值;
您应该执行以下操作以使其正常工作:转换为Int 32(dgvListOfFilters.行[选定的intRowSelected].单元格[3].值); cmbFilter.选定值=整数类别;
希望这对很多人都有帮助。

相关问题