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;

}

相关推荐
程序设计实验室4 小时前
Spark.NET:一个试图把 Django / Rails 式开发体验带回 .NET 世界的全栈 Web 框架。
c#
byoass5 小时前
智巢AI知识库深度解析:企业文档管理从大海捞针到精准狙击的进化之路
开发语言·网络·人工智能·安全·c#·云计算
njsgcs9 小时前
solidworks自动标注折弯4 无向图 c#
开发语言·c#·solidworks
我是唐青枫10 小时前
C#.NET ThreadLocal 深入解析:线程独享数据、性能收益与实战边界
c#·.net
JQLvopkk11 小时前
C# 工业级上位机:交互实战
开发语言·c#·交互
kingwebo'sZone12 小时前
PdfiumViewer使用权限控制期操作按钮(PdfViewer其实也可以完整兼容)
c#
张小俊_13 小时前
WPF 跨线程 UI 更新与硬编码赋值引发的 Bug 排查
c#·bug·wpf
無斜13 小时前
【CAPL实用开发】--- CAPL调用 .NET DLL
开发语言·c#·capl·canoe
puamac14 小时前
UcTabWindow 布局多tab,加载编辑器和资源管理器等自定义控件
c#·编辑器·datagridview
唐青枫14 小时前
别再把增删改查写成一锅粥!C#.NET CQRS 从原理到实战
c#·.net