winform 跨窗体传值+DMI应用程序(信息管理系统)-洋葱先生-杨少通

本文主要是介绍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应用程序(信息管理系统)-洋葱先生-杨少通的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538249

相关文章

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

16 子组件和父组件之间传值

划重点 子组件 / 父组件 定义组件中:props 的使用组件中:data 的使用(有 return 返回值) ; 区别:Vue中的data (没有返回值);组件方法中 emit 的使用:emit:英文原意是:触发、发射 的意思components :直接在Vue的方法中声明和绑定要使用的组件 小炒肉:温馨可口 <!DOCTYPE html><html lang="en"><head><

React 笔记 父子组件传值 | 父组件调用子组件数据 | defaultProps | propsType合法性验证

1.通过props实现父组件像子组件传值 、方法、甚至整个父组件 传递整个父组件则   [变量名]={this} import Header from "./Header"render(){return(<Header msg={"我是props传递的数据"}/>)} import React,{Component} from "react";class Header extends

react笔记 8-18 事件 方法 定义方法 获取/改变数据 传值

1、定义方法并绑定 class News extends React.Component {constructor(props) {super(props)this.state = {msg:'home组件'}}run(){alert("我是一个run") //方法写在类中}render() {return (<div><h2>{this.state.msg}</h2><button onCli

Java Web应用程序的推荐目录结构

以前没有用过maven管理过项目的依赖,最后使用上了maven,发现通过不能方式建立出来的web应用程序目录结构基本都不一样,既然每次都要到网上搜索如何建立maven管理的Web应用程序,不如自己找百度谷歌一下。 找了半天 ,感觉比较好的maven管理的web应用程序目录结构是这个: ├── pom.xml└── src├── main│ ├── java│ │ └── myg

在糖尿病患者信息管理系统中,导入病人信息功能!

在糖尿病患者信息管理系统中,导入病人信息功能!form表单提交数据(Excel文件),在后台得不到file文件,解决方法:         private File filePath; //文件         private String fileName; //文件名         private String fileType; //文件类型 注:上面filePath必须有,否则下面

在糖尿病患者信息管理系统中,交流区模块想模仿论坛那样几楼几楼的!

在糖尿病患者信息管理系统中,交流区模块想模仿论坛那样几楼几楼的! <s:if test="%{#request.page.pageData!=null}"> <s:iterator value="%{#request.page.pageData}" status="st" var="followCards"> <s:if test="%{#followCards.status==1 &&

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中,如果我们不需要使用默认边框设计自己个性化的窗体(FromBorderStyle=none时),这时候你会发现拖动窗体的功能就没有了,这里需要自己构建方法让用户可以拖动整个窗体,这里我们使用前辈的

Jasperreports+jaspersoft studio学习教程(七)- 子报表Subreport(父子报表互相传值)

转载:https://blog.csdn.net/shiyun123zw/article/details/79221708 有很多人都说Jasperreports不适合中国式复杂报表,实际上运用好父子报表可以解决大部分问题了。例如下面的表。每个学生的学科数目不固定,且每个学生后有相当于小计的平均分。有点复杂度的报表,可以使用子报表解决。 8.1 设计报表模板 8.1.1 新建主模板De

关于java多参数的传值问题解析

https://blog.csdn.net/chenzl0723/article/details/78800819 首页博客学院下载图文课论坛APP问答商城VIP会员活动招聘ITeyeGitChat     写博客赚零钱消息 Java方法参数过多   12-21 java中参数传值和传引用例子详解   10-11 javaweb中url传递多个参数时后台利用Enumeration集合接