你好,我有一個C#程序,它有一個按鈕。因此,當我們點擊按鈕時,將會在包含該按鈕的表單中計算一些值(form1
),結果將以另一種形式顯示爲標籤中的文本(form2
)。如何在單擊其他表單上的按鈕時以另一種形式在標籤上發佈文本?
我該怎麼做?任何人都可以解釋我的代碼?
你好,我有一個C#程序,它有一個按鈕。因此,當我們點擊按鈕時,將會在包含該按鈕的表單中計算一些值(form1
),結果將以另一種形式顯示爲標籤中的文本(form2
)。如何在單擊其他表單上的按鈕時以另一種形式在標籤上發佈文本?
我該怎麼做?任何人都可以解釋我的代碼?
聲明一個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;
}
}
我首先做了,但是我得到這個錯誤「由於其保護級別而無法訪問」 –
@Otimtimckck,你是什麼意思?你首先創建'Form1'然後'Form2'。也許(編輯)完整的例子會幫助你更多。 –
窗體1 - 有一些文本框和一個命令按鈕。所以當我點擊命令按鈕時,文本框中的值會加起來並貼在窗體上的另一個標籤上2 –
我會去的事件。讓你的形式通知第二種形式計算這個數字:
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
,而不是自定義事件處理r選擇的解決方案更緊湊:
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);
}
}
這將是很好,如果你 –
你必須'Form1'到'Form2'參考添加一些代碼片斷。我假設你從第一個創建第二個表單。然後你可以使用一個參考。將其保存在全局變量中,以便您可以通過多種方法訪問它。 –
你能懇求給我一個怎麼做的語法嗎? –