几种常用的winform桌面应用中,窗体之间传值的常用方式

概述:

在工作中,我经常在 BS 项目和 CS 项目之间来回切换。老师说mfc小游戏程序基于对话框,理论上人脑的容量是无限的。. 但好记性不如烂文。与其为百度、CSDN、博客园编程mfc小游戏程序基于对话框,不如多积累一些常用的知识点。

今天整理了几个常用的winform桌面应用开发中表单间传值的常用方式!先画出试卷A和B,对本章内容进行说明!

方法一:通过变量赋值传值

表单本身就是一个类。当我们调用表单的时候,我们需要实例化表单的对象,那么这就为传值奠定了基础!例如,如果表单 A 打开表单 B,则需要实例化表单 B。这时候只需要在form B中声明变量和属性。

B 型代码:

public partial class B : Form
    {
        public B()
        {
            InitializeComponent();
        }
        public string Content1 { set; get; }
        public string content2;
        public static string content3 ;
        private void button1_Click(object sender, EventArgs e)
        {
        }
        private void B_Load(object sender, EventArgs e)
        {
            this.textBox1.Text = #34;Content1={Content1},Content2={content2},Content3={content3}";
        }
    }

表格代码:

 private void button1_Click(object sender, EventArgs e)
        {
            B b = new B();
            b.Content1 = "A content1";
            b.content2 = "A content2 ";
            B.content3 = "A content3 ";
            b.Show();
        }

效果如下,注意C#中变量和方法的默认访问修饰符都是private类型,需要手动改成public类型!

方法二:按值构造

强烈推荐这种方法,非常符合面向对象的设计思想,只需要重载构造函数即可!

表格代码:

 public partial class A : Form
    {
        public A()
        {
            InitializeComponent();
        }
        public A(string content) 
        {
            InitializeComponent();
            this.textBox1.Text = content;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            B b = new B();
            b.Content1 = "A content1";
            b.content2 = "A content2 ";
            B.content3 = "A content3 ";
            this.Hide();
            b.Show();
        }
        private void A_Load(object sender, EventArgs e)
        {
        }
    }

B 型代码:

public partial class B : Form
    {
        public B()
        {
            InitializeComponent();
        }
        public string Content1 { set; get; }
        public string content2;
        public static string content3 ;
        private void button1_Click(object sender, EventArgs e)
        {
            A a = new A("这是来自于子窗体的消息");
            
            a.Show();
        }
        private void B_Load(object sender, EventArgs e)
        {
            this.textBox1.Text = #34;Content1={Content1},Content2={content2},Content3={content3}";
        }
    }

效果如图: 需要注意的是,InitializeComponent()方法必须保留在构造函数中,这是一个表单绘制方法,必须在构造函数的第一行!

方法3:通过表单所有者对象传递值

该方法是在实例化调用表单后,将当前表单对象传递给 show 或 showdialog 方法。被调用的表单需要根据所有者对象恢复打开表单的对象。

表格代码:

public string content = "这是来自父窗体的传值";
        private void button1_Click(object sender, EventArgs e)
        {
            B b = new B();
            this.Hide();
            b.Show(this);
        }

B 型代码:

private void B_Load(object sender, EventArgs e)
        {
            A a = this.Owner as A;
            this.textBox1.Text = a.content;
        }

效果如图:

方法四:使用表单属性传值

这个方法不推荐,偶尔偷懒!玩起来还是无害的!这种行为本身就是对winform表单机制的破坏!

将Form B的文本框控件的Modifiers属性设置为public,实现表单之间的访问!

表格代码:

private void button1_Click(object sender, EventArgs e)
        {
            B b = new B();
            b.textBox1.Text = "10086!";
            this.Hide();
            b.Show(this);
        }

效果如图:

综上所述:

其他方式就不一一列举了!这些基本就够了,希望对你有点帮助!

喜欢的朋友可以关注我,一起交流学习!我是IT大叔,一个喜欢写程序、钓鱼、喝茶、玩游戏的中年大叔!

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论