c# 兩窗體間通信
方法1:使用窗體的Owner屬性
步驟 1)在窗體A呼叫窗體B之前,將窗體A賦予窗體B,即 fasSet.Owner = this;表示fasSet(窗體B)擁有窗體A,如下面代碼:
步驟 2)在窗體B中實例化窗體A,這樣窗體B就可以操作窗體A了。如下代碼
方法2:將窗體A作為控件傳入窗體B
步驟:1)修改窗B的構造函數,加入參數,類型為窗體A
步驟:2)在窗體 A呼叫窗體方法的參數中加入自己,把自己傳給窗體B。
步驟:3)在需要地方調用窗體A即可,如下代碼,改變窗體A中TextBox中的值。
步驟 1)在窗體A呼叫窗體B之前,將窗體A賦予窗體B,即 fasSet.Owner = this;表示fasSet(窗體B)擁有窗體A,如下面代碼:
/// <summary>
/// 呼叫窗體B
/// </summary>
void WakeUpForm()
{
FmAlarmSet fasSet = new FmAlarmSet();
//將本窗體設為“設置窗體”所有
fasSet.Owner = this;
fasSet.ShowDialog();
}
/// 呼叫窗體B
/// </summary>
void WakeUpForm()
{
FmAlarmSet fasSet = new FmAlarmSet();
//將本窗體設為“設置窗體”所有
fasSet.Owner = this;
fasSet.ShowDialog();
}
步驟 2)在窗體B中實例化窗體A,這樣窗體B就可以操作窗體A了。如下代碼
//得到傳入的FmAlarm窗體值
FmAlarm fa = (FmAlarm)this.Owner;
//循環查找FormA中的控件,然后變更控件中的值
foreach (Control con in fa.Controls)
{
if (con.Name == "txtAlarmContent")
{
((TextBox)con).Text = txtAlarmContent.Text;
}
}
FmAlarm fa = (FmAlarm)this.Owner;
//循環查找FormA中的控件,然后變更控件中的值
foreach (Control con in fa.Controls)
{
if (con.Name == "txtAlarmContent")
{
((TextBox)con).Text = txtAlarmContent.Text;
}
}
方法2:將窗體A作為控件傳入窗體B
步驟:1)修改窗B的構造函數,加入參數,類型為窗體A
/// <summary>
/// 窗體A變量,定義為全局變量,便於調用
/// </summary>
FmAlarm fa = null;
public FmAlarmSet(FmAlarm FmA)
{
InitializeComponent();
fa = FmA;
}
/// 窗體A變量,定義為全局變量,便於調用
/// </summary>
FmAlarm fa = null;
public FmAlarmSet(FmAlarm FmA)
{
InitializeComponent();
fa = FmA;
}
步驟:2)在窗體 A呼叫窗體方法的參數中加入自己,把自己傳給窗體B。
/// <summary>
/// 呼叫窗體B
/// </summary>
void WakeUpForm()
{
FmAlarmSet fasSet = new FmAlarmSet(this);
fasSet.ShowDialog();
}
/// 呼叫窗體B
/// </summary>
void WakeUpForm()
{
FmAlarmSet fasSet = new FmAlarmSet(this);
fasSet.ShowDialog();
}
步驟:3)在需要地方調用窗體A即可,如下代碼,改變窗體A中TextBox中的值。
//循環查找FormA中的控件,然后變更控件中的值
foreach (Control con in fa.Controls)
{
if (con.Name == "txtAlarmContent")
{
((TextBox)con).Text = txtAlarmContent.Text;
}
}
foreach (Control con in fa.Controls)
{
if (con.Name == "txtAlarmContent")
{
((TextBox)con).Text = txtAlarmContent.Text;
}
}