效果图:
//三个Combobox控件:国家-cmbCountry 省份-cmbProvince 地区:cmbArea首先,初始化窗体控件值(加载国家列表)
Code
/// <summary>
/// 初始化窗体控件值
/// </summary>
private void InitializeEnviroment()
{
try
{
byte[] byteDataset = Services.BASService.GetCountryList();
DataSet ds = Converter.DecompressDS(byteDataset);
cmbCountry.DataSource = ds.Tables[0];
cmbCountry.DisplayMember = "Country";
for (int i = 0; i < cmbCountry.Items.Count; i++)
{
DataRowView item = (DataRowView)cmbCountry.Items[i];
if (item.Row[0].ToString() == "中国")
{
cmbCountry.SelectedIndex = i;
break;
}
}
//if (cmbCountry.Items.Count > 0)
// cmbCountry.SelectedIndex = 0;
}
catch(Exception ex)
{
MessageBox.Show(Definition.MESSAGE_QUERY_ERROR + ":" + ex.Message);
}
} 编辑cmbCountry的SelectedIndexChanged控件
Code
private void cmbCountry_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
DataRowView rowC = (DataRowView)cmbCountry.SelectedItem;
byte[] byteDataset = Services.BASService.GetProvinceList(rowC.Row[0].ToString());
DataSet ds = Converter.DecompressDS(byteDataset);
cmbProvince.DataSource = ds.Tables[0];
cmbProvince.DisplayMember = "Province";
for (int i = 0; i < cmbProvince.Items.Count; i++)
{
DataRowView item = (DataRowView)cmbProvince.Items[i];
if (item.Row[0].ToString() == "福建")
{
cmbProvince.SelectedIndex = i;
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show(Definition.MESSAGE_QUERY_ERROR + ":" + ex.Message);
}
}
同时编辑cmbProvince的SelectedIndexChanged控件
Code
private void cmbProvince_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
DataRowView rowC = (DataRowView)cmbCountry.SelectedItem;
DataRowView rowP = (DataRowView)cmbProvince.SelectedItem;
byte[] byteDataset = Services.BASService.GetAreaList(rowC.Row[0].ToString(), rowP.Row[0].ToString());
DataSet ds = Converter.DecompressDS(byteDataset);
cmbArea.DataSource = ds.Tables[0];
cmbArea.DisplayMember = "Area";
for (int i = 0; i < cmbArea.Items.Count; i++)
{
DataRowView item = (DataRowView)cmbArea.Items[i];
if (item.Row[0].ToString() == "厦门")
{
cmbArea.SelectedIndex = i;
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show(Definition.MESSAGE_QUERY_ERROR + ":" + ex.Message);
}
} 至此,就能实现我们所要的目的了。
编辑时,只需直接给它赋值即可
cmbCountry.Text = dr["Country"].toString();
cmbProvince.Text = dr["Province"].toString();
cmbArea.Text = dr["Area"].toString();
总结:
这里值得注意的应该就是选择国家或省份时值切换时该使用的辅助对象DataRowView。这里不具体说明,如果有疑问的朋友,欢迎回复讨论!
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· Tinyfox 发生重大改版
· DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
· 对比使用DeepSeek与文新一言,了解DeepSeek的关键技术论文
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· DeepSeekV3+Roo Code,智能编码好助手