您好我在C#中有一个程序,它有一个按钮。因此,当我们单击按钮时,它将计算包含该按钮(form1
)的表单中的某些值,结果将以另一种形式(form2
)显示为标签中的文本。
我该怎么做?任何人都可以向我解释代码吗?
答案 0 :(得分:1)
在Form2
中声明Form1
变量:
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;
}
}
答案 1 :(得分:0)
我会参加活动。让您的表单通知第二个表格,计算出该数字:
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);
}
}