【问题标题】:select combobox item by value c# in winform在winform中按值c#选择组合框项
【发布时间】:2016-06-08 02:32:26
【问题描述】:

我的组合框有以下自定义类,我正在尝试以编程方式按值选择一个项目。我可以使用强制转换按值检索项目,但似乎无法按值选择项目。

string test2 = ((GetAcctNum)_comboBox.SelectedItem).Value; 

// 强制转换可以按值检索项目,但是如何按值选择项目?

public class GetAcctNum
{
    public string Value { get; set; }
    public string Text { get; set; }
    public override string ToString()
    {
        return Text;
    }
}

我不能使用下面的解决方案,因为我不知道文本。我只会知道组合框中需要选择的隐藏值。

_comboBox.SelectedValue = _comboBox.Items.FindByText("text").Value;

下面是我如何将值添加到组合框

SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
 {
     while (reader.Read())
    {
       temp = new GetAcctNum();
       temp.Value = reader["AccountID"].ToString();
       temp.Text = reader["AccountNumber"].ToString();  
        getAcctNum.Add(temp);
        rowsAffected++;
   }
 }
//Omitted for brevity//
foreach (GetAcctNum item in getAcctNum)
{
   _comboBox.Items.Add(item);
}

getAcctNum

【问题讨论】:

  • 试试这个_comboBox.Text = _comboBox.Items.FindByText("text").Value;

标签: c# .net winforms combobox


【解决方案1】:

当您将帐号列表分配给您的ComboBox 时,请指定要向用户显示的属性,以及用作选择的基础值的属性。

List<GetAcctNum> accountNumbers = GetAccountNumbersFromWherever();

_comboBox.DataSource = accountNumbers;
_comboBox.DisplayMember = "Text";
_comboBox.ValueMember = "Value";

然后您可以通过指定帐户列表中的值之一来设置SelectedValue

_comboBox.SelectedValue = "SomeValueFromYourListOfAccounts";

【讨论】:

  • 我以为我以前试过这个,但不知何故它现在工作了。我认为是因为我之前没有覆盖 ToString()。
【解决方案2】:

使用此类和方法按值选择项。

    public class ComboboxItem
    {
        public string Text { get; set; }
        public object Value { get; set; }

        public ComboboxItem(string text, string value)
        {
            Text = text;
            Value = value;
        }
        public override string ToString()
        {
            return Text;
        }
    }


    private  void SelectCmbItemByValue( ComboBox cbo, string value)
    {
        for (int i = 0; i < cbo.Items.Count; i++)
        {

            ComboboxItem ci = (ComboboxItem)cbo.Items[i];
            string _value = ci.Value.ToString();
            if (ci != null && _value == value)
            {
                cbo.SelectedIndex = i;
                break;
            }
        }

    }

【讨论】:

  • 不工作...无法将“System.Data.DataRowView”类型的对象转换为“ComboboxItem”类型。
猜你喜欢
  • 1970-01-01
  • 2016-12-19
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2013-12-27
相关资源
最近更新 更多