Winform中在form1中有button1,radiobutton1,radiobutton2,radiobutton3,form2中有txtbox,现在点击button1进入form2中,并且选择一个radiobutton,form1跳转到form2,在txtbox中显示出选择的radiobutton的text,用委托线程来写这段代码
时间: 2024-04-16 07:27:24 浏览: 69
可以使用委托和线程来实现这段代码。首先,我们需要在Form1中定义一个委托类型和一个事件来触发委托。在Form2中,我们需要接受委托并进行相应的操作。以下是实现这段代码的示例:
在Form1中:
```csharp
public partial class Form1 : Form
{
public delegate void RadioButtonSelectedDelegate(string text);
public event RadioButtonSelectedDelegate RadioButtonSelected;
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.RadioButtonSelected += OnRadioButtonSelected;
form2.ShowDialog();
}
private void OnRadioButtonSelected(string text)
{
if (RadioButtonSelected != null)
{
// 发出委托事件
RadioButtonSelected.Invoke(text);
}
}
}
```
在Form2中:
```csharp
public partial class Form2 : Form
{
public event Form1.RadioButtonSelectedDelegate RadioButtonSelected;
private void radioButton_CheckedChanged(object sender, EventArgs e)
{
RadioButton radioButton = (RadioButton)sender;
if (radioButton.Checked && RadioButtonSelected != null)
{
// 发出委托事件
RadioButtonSelected.Invoke(radioButton.Text);
}
}
}
```
这样,当在Form2中选择了一个RadioButton时,会触发Form1中的委托事件,并将选中的RadioButton的Text作为参数传递给Form1。在Form1中,你可以通过处理该事件来更新Form2的txtbox控件。
注意:为了确保在跨线程访问UI控件时不引发异常,你可能需要使用Invoke方法在UI线程上执行更新操作。
阅读全文