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了