
概述:
在工作中,我经常在 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大叔,一个喜欢写程序、钓鱼、喝茶、玩游戏的中年大叔!
请登录后发表评论
注册
社交帐号登录