本文主要是介绍winform 跨窗体传值+DMI应用程序(信息管理系统)-洋葱先生-杨少通,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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-2f3.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);//该控件的父窗体实例化为fForm 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);//该控件的父窗体实例化为fForm 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 (洋葱先生)
这篇关于winform 跨窗体传值+DMI应用程序(信息管理系统)-洋葱先生-杨少通的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!