资源说明:在C#编程中,使用ComboBox控件来实现省与市的联动效果是一种常见的用户界面设计。ComboBox是一个下拉列表控件,它允许用户从预定义的列表中选择一个项目,或者输入新的值。在本例中,我们通过ComboBox来展示省份和对应的城市,当用户在“省份”ComboBox中选择一个省份时,相应的“城市”ComboBox会自动更新并显示该省份下的所有城市。
我们需要理解ComboBox的基本用法。ComboBox控件主要有两个关键属性:`Items`和`DisplayMember`。`Items`属性用于存储控件中的选项,可以是任何类型的对象。`DisplayMember`属性则指定显示在ComboBox中的成员,即用户看到的文本内容。例如,在填充省份数据时,我们将一个包含`proID`和`proName`属性的`Province`对象添加到`comboBox1.Items`中,并设置`comboBox1.DisplayMember`为`proName`,这样用户就能看到省份名称。
在`Form1_Load`事件处理程序中,我们连接到数据库,执行SQL查询获取省份数据。使用`SqlDataReader`遍历结果集,创建`Province`对象并将其添加到`comboBox1`中。通过设置`comboBox1.SelectedIndex = 0`,确保加载完成后省份列表的第一个项被选中。
接下来,当用户在“省份”ComboBox(即`comboBox1`)中做出选择时,`comboBox2_SelectedIndexChanged`事件会被触发。在这里,我们需要编写代码来获取当前选中的省份ID,然后查询数据库获取该省份的所有城市,最后将这些城市填充到“城市”ComboBox(即`comboBox2`)中。由于题目没有提供完整的`comboBox2_SelectedIndexChanged`事件处理程序,我们可以假设它会进行如下操作:
```csharp
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (comboBox1.SelectedItem != null)
{
Province selectedProvince = comboBox1.SelectedItem as Province;
if (selectedProvince != null)
{
int selectedProID = selectedProvince.proID;
// 清空城市ComboBox
comboBox2.Items.Clear();
// 查询数据库获取对应省份的城市
string query = $"SELECT * FROM cities WHERE proID = {selectedProID}";
using (SqlCommand cmd = new SqlCommand(query, conn))
{
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
City city = new City();
city.cityID = dr.GetInt32(dr.GetOrdinal("cityID"));
city.cityName = dr.GetString(dr.GetOrdinal("cityName"));
comboBox2.Items.Add(city);
}
}
}
// 显示第一个城市
if (comboBox2.Items.Count > 0)
{
comboBox2.SelectedIndex = 0;
}
}
}
}
```
这个例子展示了如何利用C#和ComboBox控件来实现动态数据绑定和交互,使得用户界面更加友好。在实际应用中,可能还需要考虑错误处理、数据库连接管理等其他因素,但上述代码已经足够说明基本的联动效果实现方法。对于`comboBox2_SelectedIndexChanged`事件,可以类似地处理,当用户在“城市”ComboBox中选择时,触发相应的业务逻辑或更新其他相关组件。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。