C#:窗体间传值

在C# WinForm开发中,窗体间传值是常见需求:

  1. ‌构造函数传值 ‌

    子窗体通过重载构造函数接收参数,适用于单向传值且参数较少的情况。例如父窗体通过new Form2(textBox1.Text)传递数据,子窗体在构造函数中接收并显示。

  2. ‌公共属性/字段传值 ‌

    在目标窗体定义公有属性,源窗体通过实例化后赋值实现传值。例如f2.Form2Value = "Ok",灵活性较高但需注意窗体生命周期。

  3. ‌静态变量传值 ‌

    通过静态类成员实现双向数据共享,如public static string value。需注意内存管理问题,适合全局数据传递。

  4. ‌Tag属性传值 ‌

    利用控件的Tag属性存储对象,如f2.Tag = dataset。适用于临时传递复杂对象但类型安全性较低。

  5. ‌委托与事件传值 ‌

    通过自定义事件和委托实现跨窗体回调,适合子窗体向父窗体返回值。需定义委托类型和事件参数类,实现松耦合通信。

  6. ‌Owner属性传值 ‌

    子窗体通过this.Owner访问父窗体实例,直接操作父窗体控件。需注意窗体间引用关系。

‌选择建议‌:

  • 简单单向传值优先用构造函数或属性;
  • 复杂数据或双向交互推荐委托事件;
  • 全局数据可用静态变量但需谨慎。

示例代码片段(构造函数传值):

// Form1中

private void button1_Click(object sender, EventArgs e) {

Form2 f2 = new Form2(textBox1.Text);

f2.Show();

}

// Form2中

public Form2(string initText) {

InitializeComponent();

label1.Text = initText;

}

相关推荐
胖纸不争9 小时前
嫌桌面 Agent 太重,我“自己”写了一个
ai·c#·net core
当青春邂逅吉米多维奇13 小时前
C#图解教程(第5版) 同步方法
开发语言·c#
波力海苔夹心脆67513 小时前
C# 机器视觉实战:单相机引导机械手精准贴合,从拍照、偏差计算(平移+旋转)到坐标补偿全解
开发语言·经验分享·数码相机·c#·视觉检测·.net
Behavior15 小时前
国内下载使用 Unity 6000 踩坑点总结
c#·unity3d·游戏开发
czhc114007566316 小时前
一张图从哪来,一个判断往哪走
c#
曹牧1 天前
C#:未被引用的函数
c#
上位机妹子1 天前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
小羊没烦恼!1 天前
jQuery1.5的改进细节
java·服务器·开发语言·前端·c#
下页、再停留1 天前
【C#桌面客户端系列学习-8】批量导出数据为csv格式
开发语言·c#·visual studio
波力海苔夹心脆6751 天前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net