根据第一个组合框的选项填充第二个组合框
Second combobox is populated depending on option from first combobox
所以我有两个组合框。第一个组合框包含所有州,第二个组合框显示所选州的地区。请注意,选项来自 .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" 文件的格式类似于 "state code; district code; district"。
例如:
01;01;曼哈顿
01;02;布鲁克林
...
另请注意,我没有使用任何形式的数据库,所以没有 SQL 或任何东西,只有 c# 语言。
据我了解,当您将状态名称放入组合框中时,您将丢失状态 ID。
将您的第一个组合框设置为显示 'Name' 并将 '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);
}
您可以使用加载按钮从 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]);
}
希望这会奏效。
所以我有两个组合框。第一个组合框包含所有州,第二个组合框显示所选州的地区。请注意,选项来自 .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" 文件的格式类似于 "state code; district code; district"。
例如:
01;01;曼哈顿
01;02;布鲁克林
...
另请注意,我没有使用任何形式的数据库,所以没有 SQL 或任何东西,只有 c# 语言。
据我了解,当您将状态名称放入组合框中时,您将丢失状态 ID。
将您的第一个组合框设置为显示 'Name' 并将 '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);
}
您可以使用加载按钮从 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]);
}
希望这会奏效。