C#跨窗体参数传递方法示例:静态变量与实例操作
3星 · 超过75%的资源 需积分: 0 36 浏览量
更新于2024-09-13
收藏 74KB PDF 举报
在C#编程中,由于与VB.NET的全局变量不同,我们需要采用其他方式来实现不同窗体之间的参数传递。本文将介绍一种方法,主要应用于两个Windows应用程序窗口之间的数据交换。
首先,创建一个新的C#项目,并在此项目中添加两个窗体:Form1和Form2。在Form1中,我们创建一个静态字符串变量`myTestStr1`,用于存储我们要传递的参数。为了方便获取和设置这个值,我们为Form1类添加了一个`public`的静态属性`GetStrValue`,同时提供getter和setter方法:
```csharp
public class Form1 : Form
{
public static string myTestStr1 = "";
public Form1()
{
InitializeComponent();
myTestStr1 = "Hello!";
}
public string GetStrValue
{
get { return myTestStr1; }
set { myTestStr1 = value; }
}
private void but_Test_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
this.ShowDialog(); // 显示Form1
frm2.ShowDialog(this); // 弹出Form2
this.Close(); // 关闭Form1
}
}
```
在Form1中,当点击名为"but_Test"的按钮时,会创建一个新的Form2实例,并显示出来。关闭Form1后,Form2继续存在。接着,在Form2的"but_Yes_Click"事件中,我们可以通过`Form_Form1.myTestStr1`直接访问并显示Form1的`myTestStr1`值,这展示了静态变量在不同窗体间的共享。
然而,如果在Form2中想要修改`myTestStr1`的值,不能直接改变静态变量,因为静态变量是所有实例共享的。所以,我们需要创建Form1的一个新实例`frm2`,然后通过这个实例的`GetStrValue`属性来操作`myTestStr1`,如下所示:
```csharp
private void but_Yes_Click(object sender, EventArgs e)
{
MessageBox.Show(Form_Form1.myTestStr1); // 显示原始值
Form_Form1 frm2 = new Form_Form1();
frm2.GetStrValue = "How do you do?"; // 修改静态变量值
MessageBox.Show(frm2.GetStrValue); // 显示修改后的值
MessageBox.Show(Form_Form1.myTestStr1); // 再次显示,确认修改
}
```
总结,这种方法利用了C#中的静态属性和事件处理机制,展示了如何在两个不同窗体之间传递和共享数据。需要注意的是,静态变量虽然简单,但其全局性质可能会影响代码的可维护性和封装性,因此在实际开发中应根据具体需求选择合适的参数传递方式。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2012-09-11 上传
2016-02-14 上传
2021-01-20 上传
2020-09-04 上传
2009-02-03 上传
uuu1119
- 粉丝: 0
- 资源: 1