Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想自动选择带有值的组合框_C#_Winforms - Fatal编程技术网

C# 我想自动选择带有值的组合框

C# 我想自动选择带有值的组合框,c#,winforms,C#,Winforms,你能告诉我怎么解决这个问题吗 我想自动选择带有值的combobox表单数据库以供显示(而不是通过文本选择) 将值和文本添加到组合框 public void ComBoList(JArray Data) { comboBoxBrand.Items.Clear(); comboBoxSize.Items.Clear(); comboBoxPCBrand.Items.Clear(); comboBoxProductOf.Items.Cle

你能告诉我怎么解决这个问题吗

我想自动选择带有值的combobox表单数据库以供显示(而不是通过文本选择)

将值和文本添加到组合框

public void ComBoList(JArray Data)
{
        comboBoxBrand.Items.Clear();
        comboBoxSize.Items.Clear();
        comboBoxPCBrand.Items.Clear();
        comboBoxProductOf.Items.Clear();

        comboBoxBrand.DisplayMember = "Text";
        comboBoxBrand.ValueMember = "Value";
        comboBoxSize.DisplayMember = "Text";
        comboBoxSize.ValueMember = "Value";
        comboBoxPCBrand.DisplayMember = "Text";
        comboBoxPCBrand.ValueMember = "Value";
        comboBoxProductOf.DisplayMember = "Text";
        comboBoxProductOf.ValueMember = "Value";

        JArray AllData = JArray.Parse(Data.ToString());
        int JCount = AllData.Count;

        for (int i = 0; i <= (JCount - 1); i++)
        {
            foreach (var Values in AllData[i])
            {
                if (i == 0)
                {
                    int BId = int.Parse(Values["HddBrandId"].ToString());
                    comboBoxBrand.Items.Add(new { Text = Values["BrandName"].ToString(), Value = BId });
                }
                else if (i == 1)
                {
                    int SId = int.Parse(Values["SizeId"].ToString());
                    comboBoxSize.Items.Add(new { Text = Values["Size"].ToString(), Value = SId });
                }
                else if (i == 2)
                {
                    int PId = int.Parse(Values["PCBrandId"].ToString());
                    comboBoxPCBrand.Items.Add(new { Text = Values["BrandName"].ToString(), Value = PId });
                }
                else if (i == 3)
                {
                    int CId = int.Parse(Values["CountryId"].ToString());
                    comboBoxProductOf.Items.Add(new { Text = Values["CountryName"].ToString(), Value = CId });
                }
            }
        }
}
请帮帮我


谢谢。

当使用数据绑定(通过将
.DataSource
属性设置为可绑定集合)填充组合框时,将使用DisplayMember和ValueMember

不要将内容放入组合
.Items
集合中,而是将它们放入列表中,将
.DataSource
设置为列表,然后在设置
.SelectedValue
时,如果您设置的值等于列表项的
.value
属性之一的值,则它将从列表中选择一项

为此,使用ValueTuple(或完整类)可能比使用匿名类型更容易,但是可以绑定匿名类型,您可能只需要使用小提琴为其创建列表

var listToBind = new int []{}.Select(s=> new{ Text = "", Val=0}).ToList();
    

这将为您提供一个
列表
,您可以在其中加载匿名键入的项目。。然后,您可以将combo数据源设置为它,事情应该按照您的预期进行。。虽然通过SelectedItem将它们取出会返回一个围绕匿名类型的对象,但您将很难使用它(我的投票;为DisplayValue对创建一个合适的类,或者使用元组,或者在使用数据绑定填充组合框时(通过将
.DataSource
属性设置为可绑定集合)使用已存在的东西,如
KeyValuePair
DisplayMember和ValueMember)

不要将内容放入组合
.Items
集合中,而是将它们放入列表中,将
.DataSource
设置为列表,然后在设置
.SelectedValue
时,如果您设置的值等于列表项的
.value
属性之一的值,则它将从列表中选择一项

为此,使用ValueTuple(或完整类)可能比使用匿名类型更容易,但是可以绑定匿名类型,您可能只需要使用小提琴为其创建列表

var listToBind = new int []{}.Select(s=> new{ Text = "", Val=0}).ToList();
    

这将为您提供一个
列表
,您可以在其中加载匿名类型的项目。然后,您可以将combo数据源设置为该列表,事情应该按照您的预期进行。尽管通过SelectedItem将其取出会返回一个围绕匿名类型的对象,您将很难使用它(我的投票;为DisplayValue对创建一个合适的类,或者使用一个元组,或者一些已经存在的东西,如
KeyValuePair

好的,我会尝试。谢谢。我使用var Brand=new BindingList();这是答案。谢谢。好的,我会尝试。谢谢。我使用var Brand=new BindingList();这是答案。谢谢。