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

时间:2021-10-08 02:56:50

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了

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