(一)添加新学员窗体设计
按钮左右的方框实际上是PictureBox,在属性中修改想要的样式;
使用容器中的GroupBox,可以集中管理控件
实现的效果如下:
-
使用RadioButton设置如下选择键:
-
使用DateTimePicker设置时间:时间的格式可以自定义为:yyyy-MM-dd,这样得出下面的格式
-
使用ComboBox设置下拉框:【Web中称之为DropDownList】
最后效果:
(二)子窗体嵌入父容器的方法
使用如下代码,实现弹出新窗口:
private void btnAddStudent_Click(object sender, EventArgs e)
{
FrmAddStudent objFrm = new FrmAddStudent();
objFrm.Show();
}
效果如图:
- 这种情况下,实际上并没有实现嵌入,因为实现的是弹出新的窗口,我们现在需要的是将新的窗口嵌入到原来的窗口中,需要如下方法:
嵌入父容器,使用如下方法:
private void btnAddStudent_Click(object sender, EventArgs e)
{
//嵌入窗体之前,首先判断当前容器中是不是已经存在窗体
foreach(Control item in this.spContainer.Panel2.Controls) //容器中所有的控件都继承自control
{
if(item is Form) //Form是窗体的父类
{
Form objControl = (Form)item; //强制类型转换
objControl.Close();
}
}
//将子窗体嵌入父容器
FrmAddStudent objFrm = new FrmAddStudent();
objFrm.TopLevel = false; // 将子窗体设置为非顶级控件
objFrm.WindowState = FormWindowState.Maximized; //让子窗体最大化显示
objFrm.FormBorderStyle = FormBorderStyle.None; //去掉子窗体的边框
objFrm.Parent = this.spContainer.Panel2; //指定子窗体显示的容器
objFrm.Show();
}
展示效果:
封装嵌入父容器的方法【以后只需要调用即可】:
//关闭已经打开的窗体,容器要预先定义好,当然也可以写一个带传入参数的方法
private void ClosePreForm()
{
foreach (Control item in this.spContainer.Panel2.Controls) //容器中所有的控件都继承自control
{
if (item is Form) //Form是窗体的父类
{
Form objControl = (Form)item; //强制类型转换
objControl.Close();
}
}
}
//在父容器中打开窗体;这里父容器是固定的,可以编写传入父容器的方法
private void OpenForm(Form objFrm)
{
objFrm.TopLevel = false; // 将子窗体设置为非顶级控件
objFrm.WindowState = FormWindowState.Maximized; //让子窗体最大化显示
objFrm.FormBorderStyle = FormBorderStyle.None; //去掉子窗体的边框
objFrm.Parent = this.spContainer.Panel2; //指定子窗体显示的容器
objFrm.Show();
}
这样,上面的代码简化为如下:
private void btnAddStudent_Click(object sender, EventArgs e)
{
ClosePreForm(); //关闭已经存在的窗体
//将子窗体嵌入父容器
FrmAddStudent objFrm = new FrmAddStudent();
OpenForm(objFrm);
}
(三)学员信息管理窗体设计
-
首先搭建基本的框架模型;
-
之后使用DataGridView控件;能够实时显示数据;
编辑DataGridView
-
方法(1)
-
方法(2)
-
使用下面的方法调整标题列的高度
-
使用下面的方法调整标题栏的一些属性
注意:当有些标题行属性不能修改的时候一般需要修改下面的为false【当行要自定义修改时候尽量设定为false】
版权声明:本文为forever_008原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。