winform 跨窗体传值+DMI应用程序(信息管理系统)-洋葱先生-杨少通
发布日期:2021-10-03 07:58:45 浏览次数:1 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:WinForm添加自定义控件-洋葱先生-杨少通
下一篇:winform listBox统计信息,利用跨窗体传值实现信息修改-洋葱先生-杨少通

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月12日 11时02分40秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

php如何数组去重复,PHP如何去除数组重复元素? 2019-04-21
java转换ab的值,查看新闻/公告--[整理]Java将AB1234形式的16进制字符串转换为10进制数值,考虑字节序的影响.... 2019-04-21
ui php h5,画出自己的UI组件的详情 2019-04-21
linux服务文件编写,linux编写systemd下服务脚本 2019-04-21
hdfs linux 目录是否存在,Linux中判断hdfs文件是否存在 2019-04-21
linux学习需要什么基础,学linux需要什么基础? 2019-04-21
linux vim编辑kconfig 无法wq,Linux-4.9.2内核在mini2440上的移植(三)——编译环境测试... 2019-04-21
高斯勒让德在c语言中的程序,c语言:用递归方法编写程序,求n阶勒让德多项式的值... 2019-04-21
c语言单片机电子时钟,新人求个51单片机的电子时钟汇编语言(C语言的还没学到)... 2019-04-21
c++语言文件流,C++文件流 2019-04-21
android 动态毛玻璃,Android毛玻璃背景效果简单实现代码 2019-04-21
android 按钮提示,的Android按钮工具提示 2019-04-21
iphone通讯录 android,3个方法,教你如何快速而又有效的将联系人从iPhone转移到安卓... 2019-04-21
android horizontalscrollview 滑动事件,ScrollView的滑动监听(以HorizontalScrollView为例) 2019-04-21
win7自定义html为桌面,Win7系统自定义桌面主题的方法 2019-04-21
单系统 台电x80pro_台电x80 pro (ID:E3E6)安装remix OS系统教程整理 2019-04-21
linux存储pdf伟岸_python的reportlab库介绍、制作pdf和作图 2019-04-21
安徽信息技术初中会考上机考试模拟_2020年中小学寒假、考试时间定下了! 2019-04-21
ubuntu 退出anaconda环境_从零开始深度学习第15讲:ubuntu16.04 下深度学习开发环境搭建与配置... 2019-04-21
稳定币usda是哪个发行的_武夷山币装帧款曝光,共4款设计,你喜欢哪款? 2019-04-21