一、界面管理
注:在此篇文章仅演示标题所说的内容,项目的具体实现过程会在后续更新。
- 组件图
组件解释:
性别和婚姻状况组件后边添加的是groupBox,再通过代码动态添加RadioButton
家庭住址后边添加的是comBox,首先修改其Text值,再通过代码添加数据
二、代码部分
1.实例化数据库对象
db_MoudelEntities1 ae = new db_MoudelEntities1();
2.构造函数,方便后续的所有类似的组件添加数据
type值为数据库表中的字段值,gb为向需要的GroupBox添加数据的形参。原理与其他语言的构造方法原理类似,这里就不再赘述。
//向GroupBox中添加Button按钮
private void dict_gbRadio(int type, GroupBox gb) {
//从数据库中拿到和传递的 type值相同的数据
List<t_dict> tdlist = ae.t_dict.Where(t => t.enum_type == type).ToList();
int i = 0;//为了后续的第一个值为选中状态
foreach (t_dict item in tdlist) {
//添加按钮
RadioButton rb = new RadioButton();
//将对应的type 的value值循环·给rb的Text值
rb.Text = item.enum_value;
//设置RadioButton的位置 x轴和y轴
rb.Location = new Point(i * 70 + 10, 10);
rb.Width = 70;
if (i == 0)
rb.Checked = true;
//向GroupBox中添加RadioButton按钮
gb.Controls.Add(rb);
i++;
}
}
地区联动
//地区联动
private void area_combox(int id, ComboBox cb) {
List<t_area> arealist = ae.t_area.Where(t => t.area_parent_id == id).ToList();
foreach(t_area item in arealist)
{
cb.Items.Add(item.area_name);
}
}
向单独的ComBox中添加数据
//向单独的ComBox中添加数据
private void dict_combox(int type, ComboBox cb) {
List<t_dict> tdlist = ae.t_dict.Where(t => t.enum_type == type).ToList();
foreach (t_dict items in tdlist) {
cb.Items.Add(items.enum_value);
}
}
3.地区联动后续
双击省的ComBox后自动生成此方法
当前组件的值发生改变后,让市和区的Text为空,并且清空市的Items值,防止在省的内容发生改变后在市中继续叠加从数据库拉取的相应数据
private void t_fpro_SelectedIndexChanged(object sender, EventArgs e)
{
t_fcit.Text = "";
t_fcou.Text = "";
t_fcit.Items.Clear();
//通过已得到的省的名字获取数据
t_area area = ae.t_area.Where(t => t.area_name == t_fpro.Text).First();
area_combox(area.id, t_fcit);
}
private void t_fcit_SelectedIndexChanged(object sender, EventArgs e)
{
t_fcou.Items.Clear();
t_area area = ae.t_area.Where(t => t.area_name == t_fcit.Text).First();
area_combox(area.id, t_fcou);
}
4.向主窗体中调用构造方法
private void Frmcbgl_Load(object sender, EventArgs e)
{
//性别
dict_gbRadio(1,t_gbdictsex);
//婚姻状况
dict_gbRadio(11, t_gbdictmer);
//家庭住址 省
area_combox(0, t_fpro);
//关系
dict_combox(9, t_cbrela);
}
附部分数据表: