在C的Windows窗体应用程序中,向窗体程序传值有多种方法。以下是几种常用的方式:
1. 使用公共属性
在子窗体中定义一个公共属性,然后在父窗体中给这个公共属性赋值。这种方法简单直接,易于实现。
子窗体代码示例:
```csharp
public partial class ChildrenForm : Form
{
public string strMessage { get; set; }
private void ChildrenForm_Load(object sender, EventArgs e)
{
// 使用公共属性显示传递的值
this.textBox1.Text = strMessage;
}
}
```
父窗体代码示例:
```csharp
private void button1_Click(object sender, EventArgs e)
{
ChildrenForm childForm = new ChildrenForm();
childForm.strMessage = "这是从父窗体传递过来的值";
childForm.Show();
}
```
2. 通过构造函数传值
在子窗体的构造函数中添加参数,通过创建子窗体对象时传递参数的方式进行值的传递。
子窗体代码示例:
```csharp
public partial class ChildrenForm : Form
{
public ChildrenForm(string message)
{
InitializeComponent();
this.textBox1.Text = message;
}
}
```
父窗体代码示例:
```csharp
private void button1_Click(object sender, EventArgs e)
{
ChildrenForm childForm = new ChildrenForm("这是从父窗体传递过来的值");
childForm.Show();
}
```
3. 使用静态变量
在子窗体中定义一个静态变量,通过直接赋值的方式进行值的传递。静态变量可以被类的所有实例共享。
子窗体代码示例:
```csharp
public partial class ChildrenForm : Form
{
public static string StaticMessage { get; set; }
private void ChildrenForm_Load(object sender, EventArgs e)
{
// 使用静态变量显示传递的值
this.textBox1.Text = StaticMessage;
}
}
```
父窗体代码示例:
```csharp
private void button1_Click(object sender, EventArgs e)
{
ChildrenForm.StaticMessage = "这是从父窗体传递过来的值";
ChildrenForm childForm = new ChildrenForm();
childForm.Show();
}
```
4. 使用事件
通过事件机制,可以在父窗体和子窗体之间传递值。父窗体可以触发一个事件,子窗体可以订阅这个事件并处理传递的值。
父窗体代码示例:
```csharp
public partial class Form1 : Form
{
public event Action
private void button1_Click(object sender, EventArgs e)
{
ValueChanged?.Invoke("这是从父窗体传递过来的值");
}
}
```
子窗体代码示例:
```csharp
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
Form1.ValueChanged += OnValueChanged;
}
private void OnValueChanged(string value)
{
this.textBox1.Text = value;
}
}
```
5. 使用全局变量
在应用程序的某个类中定义全局变量,通过这个全局变量在不同窗体之间共享数据。
全局变量类代码示例:
```csharp
public class Global
{
public static string StrMyString;
}
```
窗体代码示例:
```csharp
// 在Form1中设置全局变量的值
private void button1_Click(object sender, EventArgs e)
{
Global.StrMyString = "这是从Form1传递过来的值";
Form2 form2 = new Form2();
form2.Show();
}
// 在Form2中访问全局变量的值
private void Form2_Load(object sender, EventArgs e)
{
this.label1.Text = Global.StrMyString;
}
```
以上方法可以根据具体的应用场景和需求选择使用。公共属性和构造函数传值是最常用的方法,因为它们既简单又直观。全局变量和事件则适用于更复杂的场景,例如需要跨多个窗体或应用程序共享数据或通信的情况。