当我们点击其他表单上的按钮时,如何在其他表单的标签上发布文本
本文关键字:其他 表单 布文本 标签 文本 我们 按钮 | 更新日期: 2024-10-19 01:03:51
你好,我在C#中有一个程序,它确实有一个按钮。因此,当我们单击按钮时,它将在包含该按钮的表单中计算一些值(form1
),结果将显示为另一个表单(form2
)中标签中的文本。
我该怎么做?有人能向我解释一下代码吗?
在Form1
:中声明Form2
变量
Form2 f2 = new Form2;
在Form2
内部创建一个SetLabelText
方法:
public void SetLabelText(string text)
{
this.label1.Text = text;
}
每当您需要更新第二个表单上的标签时:
f2.SetLabelText("Message generated by Form1");
编辑:完整的示例
第一种形式:
public partial class Form1 : Form
{
public Form2 f2;
public Form1()
{
InitializeComponent();
f2 = new Form2();
f2.Show();
}
private void button1_Click(object sender, EventArgs e)
{
f2.SetLabelText("testing");
}
}
第二种形式:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public void SetLabelText(string text)
{
this.label1.Text = text;
}
}
我会选择事件。让您的表单通知第二个表单已计算出数字:
public partial class Form1 : Form
{
public event EventHandler<NumberCalculatedEventArgts> NumberCalculated;
private void ButtonClick(object sender, EventArgs e)
{
int value = 42; // calculate value
OnNumberCalculated(value); // Notify subscribers
}
protected void OnNumerCalculated(int value)
{
if (NumberCalculated != null) // Check if somebody needs notification
NumberCalculated(this, new NumberCalculatedEventArgs(value));
}
}
第二个表单应订阅此表单的事件:
public partial class Form2 : Form
{
private void ShowCalclulatorButton_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.NumberCalculated += Form1_NumerCalculated; // Subscribe
form1.Show();
}
void Form1_NumerCalculated(object sender, NumberCalculatedEventArgs e)
{
label1.Text = e.Value.ToString(); // Handle notification
}
}
最后需要的是自定义事件参数来提供计算值:
public class NumberCalculatedEventArgts : EventArgs
{
public NumberCalculatedEventArgts(int value)
{
Value = value;
}
public int Value { get; private set; }
}
您还可以使用Action
而不是自定义事件处理程序来使解决方案更加紧凑:
public partial class Form1 : Form
{
public event Action<int> NumberCalculated;
private void ButtonClick(object sender, EventArgs e)
{
int value = 42; // calculate value
if (NumberCalculated != null)
NumberCalculaed(value);
}
}