其他窗体赋值给comboBox实现值的回显,并使赋的值处于选中状态(根据text获取selectedindex)

Form1 发货单位的这个下拉框comboBox1已经绑定数据库test表的name字段,里面有很多单位名称

比如有:甲公司、乙公司...

1、Form1的comboBox1首先绑定数据库的数据表test

    using (SQLiteConnection con = new SQLiteConnection(DATA_SOURCE))
            {
                con.Open();
                using (SQLiteCommand cmd = new SQLiteCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandText = string.Format("select * from test t ");
                    int rows = cmd.ExecuteNonQuery();
                    SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    sda.Fill(ds);
                    DataTable dt = ds.Tables[0];
                    this.comboBox1.DataSource = dt;
                    // 删除委托
                    comboBox1.SelectedIndexChanged -= new EventHandler(comboBox1_SelectedIndexChanged);//这里是多余的
                    this.comboBox1.DisplayMember = "name";//下拉框要显示的数据库的字段
                    this.comboBox1.ValueMember = "id";  //显示的数据库的字段对应的那张表的id
                    this.comboBox1.SelectedIndex = -1;//首先comboBox1显示为空
                    // 增加委托
                    comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);//这里是多余的
} }

2、窗体Form2要赋值给窗体Form1的这个下拉框:

让这个下拉框属性modifies为public,在Form2里把fhdw这个变量给Form1下拉框

Form1 z = new Form1();

z.comboBox1.Text = fhdw;

Form2的赋值工作完成了,可以在Form1里看到,下拉框已经显示有值,但是只是有值,并没有处于选中状态,也就不能用其selectedValue

3、赋值之后怎么让这个值处于选中状态:

在Form1的comboBox1已绑定的诸多单位里,找这个传过来的Text值,

      string fhdw = "";
            int fhdw_index = this.comboBox1.FindString(comboBox1.Text);//找到之后返回0
            this.comboBox1.SelectedIndex = fhdw_index;  //SelectedIndex等于0,相当于选中了
            if (comboBox1.SelectedIndex == -1)  //验证一下有没有选中
            {
                MessageBox.Show("请选择发货单位");
                return;
            }
            fhdw = comboBox1.SelectedValue.ToString();//因为处于选中状态,可以用SelectedValue了
原文地址:https://www.cnblogs.com/Donnnnnn/p/6056852.html