当我们点击其他表单上的按钮时,如何在其他表单的标签上发布文本

本文关键字:其他 表单 布文本 标签 文本 我们 按钮 | 更新日期: 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);
    }
}