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-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 (洋葱先生)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值