這可能是一個新手問題。 :)。考慮以下情況。在C#中的兩個Windows Froms之間發送信息#
- 假設我們有已經「裝」(即你
可以看到兩種形式)- 表1中包含一個文本框和「提交」按鈕,而形成了兩個Windows窗體2 包含文本標籤。
- 用戶可以在文本框中輸入字符串,然後按 表單上的提交表單2上的標籤應該用新文本更新 。
實現這一目標的最佳方法是什麼?任何正式的方式來做到這一點?我不想不必要地增加變量範圍。
編輯:這兩種形式都屬於同一個應用程序
這可能是一個新手問題。 :)。考慮以下情況。在C#中的兩個Windows Froms之間發送信息#
- 假設我們有已經「裝」(即你
可以看到兩種形式)- 表1中包含一個文本框和「提交」按鈕,而形成了兩個Windows窗體2 包含文本標籤。
- 用戶可以在文本框中輸入字符串,然後按 表單上的提交表單2上的標籤應該用新文本更新 。
實現這一目標的最佳方法是什麼?任何正式的方式來做到這一點?我不想不必要地增加變量範圍。
編輯:這兩種形式都屬於同一個應用程序
對winforms中的模型視圖控制器模式和數據綁定進行一些研究。
創建一個單獨的控制器類並以兩種形式引用它,這兩種形式實現了INotifyPropertyChanged
。在控制器上,有一個屬性可以將更改的事件從表單傳播到表單。
Form1觸發Form2打開。 Form2重載了構造函數,它將調用窗體作爲參數並提供對Form2成員的引用。這解決了通信問題。例如,我已經在Form1中公開了Form1中的Label Property,並在Form2中對其進行了修改。
通過這種方法,您可以以不同的方式進行溝通。
Download Link for Sample Project
// 你Form1中
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
public string LabelText
{
get { return Lbl.Text; }
set { Lbl.Text = value; }
}
}
// 你的窗體2
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private Form1 mainForm = null;
public Form2(Form callingForm)
{
mainForm = callingForm as Form1;
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
this.mainForm.LabelText = txtMessage.Text;
}
}
-1這絕對不是這樣做的方式。你想要將表格彼此分開。爲什麼form1必須知道form2的存在? – 2010-02-09 07:56:16
當然,如果這需要真正實現,就必須知道表格。你爲什麼要更新任何形式的標籤而沒有任何目的。所以參考資料是爲了指定目的而保存的。 – 2010-02-09 07:57:42
雖然我不會downvote,我分享這個意見! – 2010-02-09 07:58:23
這兩種形式在同一個應用程序中? – 2010-02-09 07:51:07
您可以使用事件來減少耦合。 – 2010-02-09 09:33:22