C#组合框值并使用invoke方法显示

时间:2011-12-14 13:40:43

标签: c# winforms combobox textbox task

我正在使用Windows Forms,我有一个包含值的组合框:

  

Apple
   橘子
   对

我的文本框包含值1,2和3,

apple = 1且oranges = 2且pair = 3。

这个关系在我的SQL表中,字段是Account和Name。如果将组合框选为橙色,如何将文本框的值更改为=?

基本上这是对我正在处理的程序的引用,该程序有一个帐户组合框,显示帐户名称(用户友好)。我需要名称ID帐号才能显示在文本框中。从这个文本框中,我可以将值传递给我的存储过程,该过程将获得该帐户的所有信息。

更新

上述文字已过期。见下文!

要添加的注释是我的代码获取帐户详细信息并填充我的组合框。

有一种简单的方法吗?或者这是否需要加入C#类似于表上的SQL连接?

或者根本没有使用文本框,基本上我的组合将有2个字段为橙色,2但仅向用户显示橙色,但我的其他方法使用第二个字段2.

好的,所以这部分将acc字段添加到组合框中。

{
    SqlCommand accountFill = new SqlCommand("SELECT name, acc FROM dbo.Customer", conn1);
    SqlDataReader readacc = accountFill.ExecuteReader();

    while (readacc.Read())
    {
        AddItem(readacc.GetString(0).ToString(), readacc, "name", "acc");
    }
    conn1.Close();
}

添加项目是我的任务使用的调用方法。

private void AddItem(string value, Object dataSource, string name, string acc)
{
    if (accCollection.InvokeRequired)
    {
        accCollection.Invoke(new Action<string,Object,string,string>(AddItem), new Object[] { value });
    }
    else
    {
        //accCollection.Items.Add(value);
        accCollection.DataSource = dataSource;
        accCollection.DisplayMember = name;
        accCollection.ValueMember = acc;
    }
}

ERROR复杂数据绑定接受数据源,即数据源中的i.list或i.list源。

2 个答案:

答案 0 :(得分:1)

ComboBox类有两个属性ValueMemberDisplayMember。您需要将DisplayMember属性设置为表或数据的名称,即。即橙色,苹果等...,并将ValueMember属性设置为它们的Id:

combobox1.Datasource = readacc;
combobox.DisplayMember = 'name';
combobox.ValueMember = 'acc';

然后您只需使用两个属性SelectedValue来获取ID或SelectedText来获取值。例如,您可以使用ComboBox.SelectedIndexChanged事件获取所选项目的ID:

private void ComboBox1_SelectedIndexChanged(object sender, 
    System.EventArgs e)
{
    textbox2.text = int.parse(combobox1.SelectedValue.ToString());
}

或者你可以得到选择的文字,如:

textbox2.text = combobox1.SelectedText;

答案 1 :(得分:0)

    DataTable dt = new DataTable("ListItem");
    dt.Columns.Add("Id", Type.GetType("System.Int32"));
    dt.Columns.Add("Name", Type.GetType("System.String"));

    dt.Rows.Add(new object[]{1,"apple"});
    dt.Rows.Add(new object[]{2,"oranges"});
    dt.Rows.Add(new object[]{3,"pairs"});

    comboBox1.DataSource = dt;
    comboBox1.DisplayMember = "Name";
    comboBox1.ValueMember="Id";

    textBox1.DataBindings.Add("Text", dt, "Id");

    comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
    comboBox1.SelectedIndex = -1; //for initial step;

void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    textBox2.Text = comboBox1.SelectedValue.ToString();
}