所以我有两个组合框。第一个组合框具有所有状态,第二个组合框将显示所选状态的区域。请注意,这些选项来自.txt文件。
因此,在这种情况下,“ states.txt”文件的格式类似于“ state code; state”。
例如:
01;纽约
02;新泽西州
...
状态组合框运行正常,下面是使用的代码:
List<string> States = File.ReadAllLines("states.txt").ToList();
foreach(string Line in States)
{
string[] state_element = Line.Split(';');
combo_states.Items.Add(state_element[1]);
}
现在的问题是让第二个组合框显示所选州的地区。
“ district.txt”文件的格式类似于“州代码;地区代码;地区”。
例如:
01; 01;曼哈顿
01; 02;布鲁克林
...
还请注意,我没有使用任何形式的数据库,因此没有SQL或其他任何东西,只有c#语言。
答案 0 :(得分:1)
据我了解,只要将状态名称放入组合框,就会丢失状态ID。
设置您的第一个组合框以显示“名称”,并将“ Id”作为值:
combo_states.ValueMember = "Id";
combo_states.DisplayMember = "Name";
foreach(string Line in States)
{
string[] state_element = Line.Split(';');
combo_states.Items.Add(new { Id = state_element [0], Name = state_element[1]});
}
现在,在组合框的SelectedValueChange事件中,您可以访问状态ID,例如:
string id = combo_states.SelectedValue;
并具有以下地区:
var districts = File.ReadAllLines("district.txt")
.Select(x =>
{
string split = x.Split(';');
return new {StateId = split[0], DistrictId = split[1], DistrictName = split[1]}
};
然后:
string id = combo_states.SelectedValue;
district_combo.ValueMember = "DistrictId";
district_combo.DisplayMember = "DistrictName";
foreach(var item in districts.Where(d => d.StateId == id))
{
district_combo.Items.Add(item);
}
答案 1 :(得分:1)
您可以使用加载按钮从district.txt文件中加载地区。 例如:
//在load_button点击事件中
List<string> districts = File.ReadAllLines("district.txt").ToList();
foreach(string Line in districts)
{
string[] district_element = Line.Split(';');
if(district_element[0] == combo_states.Text)
combo_districts.Items.Add(district_element[2]);
}
希望这会起作用。