本文共 10610 字,大约阅读时间需要 35 分钟。
winform 跨窗体传值+DMI应用程序(信息管理系统)
实现功能:
①有登录窗口
②主程序是mdi窗口,窗口有菜单、树视图导航,点击不同的菜单项/树节点项可以导航至相应的窗体(右下角红色部分是个窗体),页面打开时为最大化状态。
③信息反馈窗口为自定义Dialog。
④效果图如下:
⑤需要8个窗体和1个自定义控件:3-7-1(登录窗体)、3-7-2(最外层窗体,为3-7-3的父窗体)、3-7-3(系统窗体)、3-7-3-1(员工管理窗体)、3-7-3-2(工程管理窗体)、3-7-3-4(财务管理窗体)、3-7-3-4(信息反馈窗体,存放自定义控件)、3-7insert(信息添加窗体)、UserControl1(用户自定义控件)
窗体详解如下:
①13-7-1(登录窗体),需要控件:2个Label、2个TextBox、1个Button
注:固定账号:admin,固定密码:123456
该窗体代码如下:
//“登录”按钮的click事件 private void button1_Click(object sender, EventArgs e) { //固定帐号:“admin”,固定密码:“123456” if(textBox1.Text=="admin"&&textBox2.Text=="123456") { //实例化3-7-2 _3_7_2 f2 = new _3_7_2(); //3-7-2窗体打开 f2.Show(); //3-7-1窗体隐藏 this.Hide(); } else { //输入不正确弹出提示框 MessageBox.Show("账号或密码错误!", "消息提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); //将帐号和密码框清空 textBox1.Text = textBox2.Text = ""; } } //3-7-1窗体的Load事件 private void _3_7_1_Load(object sender, EventArgs e) { //设置密码框显示“*” textBox2.PasswordChar = '*'; //3-7-1的窗体标题 this.Text = "登录窗体"; }
②3-7-2(最外层窗体,为3-7-3的父窗体),空白窗体,没有任何控件
该窗体代码如下:
private void _3_7_2_Load(object sender, EventArgs e) { //3-7-2窗体的标题 this.Text = "主窗口 — [员工管理页面]"; //将3-7-2窗体设置为多文档窗体 this.IsMdiContainer = true; //实例化3-7-3 _3_7_3 f3 = new _3_7_3(); //3-7-3的父窗体设置为当前窗体,即3-7-2 f3.MdiParent = this; //3-7-3打开 f3.Show(); }
③3-7-3(系统窗体)需要控件:TreeView
该窗体代码如下:
//Load事件 private void _3_7_3_Load(object sender, EventArgs e) { //3-7-3窗体的标题 this.Text = "信息管理 系统维护 信息反馈"; //3-7-3窗体打开时,自动最大化 this.WindowState = FormWindowState.Maximized; this.LayoutMdi(MdiLayout.Cascade); treeView1.Dock = DockStyle.Left; treeView1.Height = this.Height; } //TreeView选中项发生改变事件 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { //实例化三个窗体 _3_7_3_1 f3731 = new _3_7_3_1(); _3_7_3_2 f3732 = new _3_7_3_2(); _3_7_3_3 f3733 = new _3_7_3_3(); //三个窗体设置为非顶级窗体 f3731.TopLevel = f3732.TopLevel = f3733.TopLevel = false; //指定三个窗体的宽度 f3731.Width = f3732.Width = f3733.Width = this.Width - treeView1.Width - 10; //选中节点展开 treeView1.SelectedNode.Expand(); //选中节点为“员工管理”时 if (treeView1.SelectedNode.Text == "员工管理") { //3-7-3-1的父窗体为当前窗体 f3731.Parent = this; //3-7-3-1显示 f3731.Show(); } if (treeView1.SelectedNode.Text == "工程管理") { f3732.Parent = this; f3732.Show(); } if (treeView1.SelectedNode.Text == "财务管理") { f3733.Parent = this; f3733.Show(); } if (treeView1.SelectedNode.Text == "系统维护") { //弹出消息对话框 MessageBox.Show("欢迎来到信息系统维护窗口!", "消息提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (treeView1.SelectedNode.Text == "信息反馈") { _3_7_3_4 f3734 = new _3_7_3_4(); f3734.ShowDialog(); } }
④3-7-3-1(员工管理窗体),需要控件:1个ListView和两个Button
该窗体代码如下:
//页面加载函数 private void _3_7_3_1_Load(object sender, EventArgs e) { //窗体标题栏无按钮 this.ControlBox = false; //窗体无标题 this.Text = ""; //该窗体为右侧填充满 this.Dock = DockStyle.Right; //ListView为顶部填充满 listView1.Dock = DockStyle.Top; //数据信息居中显示 columnHeader1.TextAlign = columnHeader2.TextAlign = columnHeader3.TextAlign = columnHeader4.TextAlign = HorizontalAlignment.Center; //listview的高度 listView1.Height = Convert.ToInt32(this.Height * 0.7); //显示细表格线 listView1.GridLines = true; } //“添加”按钮的click事件 private void button1_Click(object sender, EventArgs e) { //实例化添加数据的窗体 _3_7insert fInsert = new _3_7insert(); //让3731作为标记 传到 添加数据的窗体 fInsert.sign = 3731; //添加数据的窗体中实例化的3-7-3-1是当前窗体 fInsert.f3731 = this; //添加数据的窗体显示 fInsert.Show(); } //添加数据的函数,接收添加窗体传回来的数据项 public void insertData(string newData) { //传回来的字符串以空格分割赋给数组 string[] data = newData.Split(' '); //以row作为关键值,添加数据 listView1.Items.Add("row", data[0], 0); //添加row的三个子项值 listView1.Items["row"].SubItems.Add(data[1]); listView1.Items["row"].SubItems.Add(data[2]); listView1.Items["row"].SubItems.Add(data[3]); MessageBox.Show("添加成功!", "信息提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } //“删除”按钮的click事件 private void button2_Click(object sender, EventArgs e) { //删除所有项 listView1.Items.Clear(); }
⑤3-7-3-2(工程管理窗体),需要控件:1个ListView和两个Button
该窗体代码如下:
private void _3_7_3_2_Load(object sender, EventArgs e) { //窗体标题栏无按钮 this.ControlBox = false; //窗体无标题 this.Text = ""; //该窗体为右侧填充满 this.Dock = DockStyle.Right; //ListView为顶部填充满 listView1.Dock = DockStyle.Top; //数据信息居中显示 columnHeader1.TextAlign = columnHeader2.TextAlign = columnHeader3.TextAlign = columnHeader4.TextAlign = HorizontalAlignment.Center; //listview的高度 listView1.Height = Convert.ToInt32(this.Height * 0.7); //显示细表格线 listView1.GridLines = true; } //添加数据的函数,接收添加窗体传回来的数据项 public void insertData(string newData) { //传回来的字符串以空格分割赋给数组 string[] data = newData.Split(' '); //以row作为关键值,添加数据 listView1.Items.Add("row", data[0], 0); //添加row的三个子项值 listView1.Items["row"].SubItems.Add(data[1]); listView1.Items["row"].SubItems.Add(data[2]); listView1.Items["row"].SubItems.Add(data[3]); MessageBox.Show("添加成功!", "信息提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } //“添加”按钮的click事件 private void button1_Click(object sender, EventArgs e) { //实例化添加数据的窗体 _3_7insert fInsert = new _3_7insert(); //让3732作为标记 传到 添加数据的窗体 fInsert.sign = 3732; //添加数据的窗体中实例化的3-7-3-2是当前窗体 fInsert.f3732 = this; //添加数据的窗体显示 fInsert.Show(); } //“删除”按钮的click事件 private void button2_Click(object sender, EventArgs e) { //删除所有项 listView1.Items.Clear(); }
⑥3-7-3-3(财务管理窗体)需要控件:1个ListView和两个Button
该窗体代码如下:
//窗体Load事件 private void _3_7_3_3_Load(object sender, EventArgs e) { //窗体标题栏无按钮 this.ControlBox = false; //窗体无标题 this.Text = ""; //该窗体为右侧填充满 this.Dock = DockStyle.Right; //ListView为顶部填充满 listView1.Dock = DockStyle.Top; //数据信息居中显示 columnHeader1.TextAlign = columnHeader2.TextAlign = columnHeader3.TextAlign = columnHeader4.TextAlign = HorizontalAlignment.Center; //listview的高度 listView1.Height = Convert.ToInt32(this.Height * 0.7); //显示细表格线 listView1.GridLines = true; } //“添加”按钮的click事件 private void button1_Click(object sender, EventArgs e) { //实例化添加数据的窗体 _3_7insert fInsert = new _3_7insert(); //让3733作为标记 传到 添加数据的窗体 fInsert.sign = 3733; //添加数据的窗体中实例化的3-7-3-2是当前窗体 fInsert.f3733 = this; //添加数据的窗体显示 fInsert.Show(); } //“删除”按钮的click事件 private void button2_Click(object sender, EventArgs e) { //删除所有项 listView1.Items.Clear(); } //添加数据的函数,接收添加窗体传回来的数据项 public void insertData(string newData) { //传回来的字符串以空格分割赋给数组 string[] data = newData.Split(' '); //以row作为关键值,添加数据 listView1.Items.Add("row", data[0], 0); //添加row的三个子项值 listView1.Items["row"].SubItems.Add(data[1]); listView1.Items["row"].SubItems.Add(data[2]); listView1.Items["row"].SubItems.Add(data[3]); MessageBox.Show("添加成功!", "信息提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); }
⑦3-7insert(信息添加窗体),需要控件:4个Label、4个TextBox、1个Button
该窗体代码如下:
//接收传来的 “标记” 变量 public int sign; //窗体Load事件 public void _3_7insert_Load(object sender, EventArgs e) { //标记为3731表示3-7-3-1窗体,label对应该窗体中的ListView列表头 if (sign == 3731) { label1.Text = "工号"; label2.Text = "姓名"; label3.Text = "性别"; label4.Text = "部门"; } if (sign == 3732) { label1.Text = "工程编号"; label2.Text = "工程名称"; label3.Text = "工程部门"; label4.Text = "工程组长"; } if (sign == 3733) { label1.Text = "财务编号"; label2.Text = "财务名称"; label3.Text = "财务数额"; label4.Text = "消费部门"; } } //窗体实例化 public _3_7_3_1 f3731; public _3_7_3_2 f3732; public _3_7_3_3 f3733; public void button1_Click(object sender, EventArgs e) { //存储所添加的数据字符串,以空格分隔 string dataStr = textBox1.Text + " " + textBox2.Text + " " + textBox3.Text + " " + textBox4.Text; //根据“标记”传到不同的窗体 if (sign == 3731) { f3731.insertData(dataStr); } if (sign == 3732) { f3732.insertData(dataStr); } if (sign == 3733) { f3733.insertData(dataStr); } //当前窗体关闭 this.Close(); }
⑧UserControl1(用户自定义控件)需要控件:
自定义控件添加方法如下:
ⅰ项目创建好后,右键添加→新建项→用户控件(默认名为UserControl1.cs)
ⅱ将所需的控件拖入,编写好相应代码
ⅲ右键项目→重新生成
ⅲ工具箱内会有以项目名称命名的选项卡,展开后里面就有刚刚生成的自定义控件UserControl1,或者在工具箱的搜索框内搜索
该窗体代码如下:
//“提交”按钮的click事件 private void button1_Click(object sender, EventArgs e) { //弹出“提交成功”框 MessageBox.Show("提交成功!", "信息提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); //该控件的父窗体实例化为f Form f = this.Parent as Form; //存在f,则将其关闭 if (f != null) f.Close(); } //“退出”按钮的click事件 private void button2_Click(object sender, EventArgs e) { //弹出“提交成功”框 DialogResult dr = MessageBox.Show("退出成功!", "信息提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); //该控件的父窗体实例化为f Form f = this.Parent as Form; //存在f,则将其关闭 if (f != null) f.Close(); }
⑨3-7-3-4(信息反馈窗体,存放自定义控件)需要控件:只需要拖入刚刚自定义的控件即可,即UserControl
该窗体代码如下:
//窗体Load事件 private void _3_7_3_4_Load(object sender, EventArgs e) { //更改窗体标题 this.Text = "信息反馈"; //显示“帮助”按钮,只有最小化、和最大化按钮隐藏时才能显示“帮助”按钮 this.HelpButton = true; //关闭“最小化”按钮 this.MinimizeBox = false; //关闭“最大化”按钮 this.MaximizeBox = false; }
代码均为原创,存在不足还请见谅!如有转载请注明来源: www.dreamload.cn/blog/?p=407&preview=true (洋葱先生)
转载地址:https://blog.csdn.net/Kindergarten_Sir/article/details/108587980 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!