C#,winform形式下 2个combobox 互相联动---数据库access

本文详细介绍了在使用ComboBox组件时,如何避免两个ComboBox组件相互绑定形成死循环的问题,并提供了使用DropDownClosed事件来实现两个ComboBox组件互相联动的解决方法。通过实例演示,展示了如何在程序中动态获取数据并填充ComboBox组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章:

1,http://topic.youkuaiyun.com/u/20091027/16/b804ebc8-c88c-4c05-9652-d198d4b4f0fb.html

private void Form1_Load(object sender, EventArgs e)
{
SqlConnection con
= new SqlConnection(conn);
con.Open();
SqlCommand cmd
= new SqlCommand("select * from department",con);
SqlDataAdapter sda
= new SqlDataAdapter(cmd);
DataTable dt
= new DataTable();
sda.Fill(dt);
con.Close();
comboBox1.DataSource
= dt;
comboBox1.DisplayMember
= "department";
comboBox1.ValueMember
= "departmentId";

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedIndex>-1)
{
DataRowView drv
= (DataRowView)comboBox1.SelectedItem;
int id = Convert.ToInt32(drv.Row["departmentId"].ToString());
SqlConnection con
= new SqlConnection(conn);
con.Open();
SqlCommand cmd
= new SqlCommand("select * from major where departmentId='" + id + "'", con);
SqlDataAdapter sda
= new SqlDataAdapter(cmd);
DataTable dt
= new DataTable();
sda.Fill(dt);
comboBox2.DataSource
= dt;
comboBox2.DisplayMember
= "major";
comboBox2.ValueMember
= "majorId";
}

2,

http://blog.youkuaiyun.com/gaofeng2000/archive/2009/05/06/4156247.aspx

ComboBox的SelectionChangeCommitted事件

实现方案:

在ComboBox的SelectionChangeCommitted事件 写 联动取数:

private void comBox_subject_SelectionChangeCommitted(object sender, System.EventArgs e)
{
if (comBox_subject.SelectedIndex > -1)
{
DataRowView drv = (DataRowView)comBox_subject.SelectedItem;
String check_subject = drv.Row["学科"].ToString();

string connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath + "/teachdb.mdb";
OleDbConnection conn = new OleDbConnection(connectionStr);
conn.Open();


string strsubject = "select distinct 出版社 from presstable where 学科='" + check_subject + "'";
OleDbDataAdapter MyAdapter1 = new OleDbDataAdapter(strsubject, conn);

DataSet ds = new DataSet();
MyAdapter1.Fill(ds, "press");

comBox_Press.DataSource = ds.Tables["press"].DefaultView;
comBox_Press.DisplayMember = "出版社";
comBox_Press.ValueMember = "出版社";

conn.Close();


}
}

3

http://www.cnblogs.com/luoht/archive/2010/02/25/1673737.html

两个ComboBox互相联动的一种解决方法

今天工作中遇到一个头疼到问题就是两个comboBox互相联动绑定,开始用comboBox1_SelectedIndexChanged事件,结果两个comboBox不停的相互绑定,死循环了

后来发现微软还提供了一个comboBox1_DropDownClosed事件:当关闭组合框下拉部分时发生,当用程序改变SelectedIndex时就不会出现两个comboBox相互改对方到Index并触发comboBox1_SelectedIndexChanged,

后来将SelectedIndexChanged事件全部换成DropDownClosed,就可以实现两个comboBox互相联动了;

TextChanged事件和TextUpdate也是一个对用程序改变其值敏感,一个不敏感。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值