方法一:利用set\get構造類的公有成員函數
###問題:
Form2爲主窗體,子窗體Form6的值→子窗體Form3中
###代碼:
主窗體Form2:
namespace GPS222
{
public partial class Form2 : Form
{
Form3 form3 = new Form3();//子窗體Form3
Form6 form6 = new Form6();//子窗體Form6
public Form2()
{
InitializeComponent();
form3.trans_BaudRate = form6.trans_BaudRate;
form3.trans_PortName = form6.trans_PortName;
form3.Show(this.dockPanel1);//子窗體Form6和子窗體Form3在dockPanel1中
}
}
}
子窗體Form6:
using WeifenLuo.WinFormsUI.Docking;
namespace GPS222
{
public partial class Form6 : DockContent
{
private string BaudRate = null;
private string PortName = null;
public Form6()
{
InitializeComponent();
BaudRate = "115200";
PortName = "com1";
}
public string trans_BaudRate
{
get
{
return BaudRate;
}
}
public string trans_PortName
{
get
{
return PortName;
}
}
}
}
子窗體Form3:
using WeifenLuo.WinFormsUI.Docking;
namespace GPS222
{
public partial class Form3: DockContent
{
private string BaudRate = null;
private string PortName = null;
public Form3()
{
InitializeComponent();
}
public string trans_BaudRate
{
set
{
BaudRate = value;
}
get
{
return BaudRate;
}
}
public string trans_PortName
{
set
{
PortName = value;
}
get
{
return PortName;
}
}
private void gbtnopen_Click(object sender, EventArgs e)
{
//Form3和Form6之間傳值驗證
Text1.Text = this.BaudRate;
Text2.Text = this.PortName;
}
}
}
方法二:利用類的公有數據成員(相當於方法一的簡化,最好用!)
###問題:
Form2爲主窗體,子窗體Form6的值→子窗體Form3中
###代碼:
主窗體Form2:
namespace GPS222
{
public partial class Form2 : Form
{
Form3 form3 = new Form3();//子窗體Form3
Form6 form6 = new Form6();//子窗體Form6
public Form2()
{
InitializeComponent();
form3.BaudRate = form6.BaudRate;
form3.PortName = form6.PortName;
form3.Show(this.dockPanel1);//子窗體Form6和子窗體Form3在dockPanel1中
}
}
}
子窗體Form6:
using WeifenLuo.WinFormsUI.Docking;
namespace GPS222
{
public partial class Form6: DockContent
{
public string BaudRate = null;//private ---> public
public string PortName = null;
public Form6()
{
InitializeComponent();
BaudRate = "115200";
PortName = "com1";
}
}
}
子窗體Form3:
using WeifenLuo.WinFormsUI.Docking;
namespace GPS222
{
public partial class Form3: DockContent
{
public string BaudRate = null;//private ---> public
public string PortName = null;
public Form3()
{
InitializeComponent();
}
private void gbtnopen_Click(object sender, EventArgs e)
{
//Form3和Form6之間傳值驗證
Text1.Text = this.BaudRate;
Text2.Text = this.PortName;
}
}
}
方法三:通過構造類,一次性在窗體間傳遞多個值
###問題:
Form2爲主窗體,子窗體Form7的多個值→子窗體Form4中
###代碼:
所構造的類Net_Parameter:
namespace GPS222
{
public class Net_Parameter//類應爲public訪問控制屬性
{
//所要傳遞的多個值均定義爲Net_Parameter類的公有數據成員
public Byte partten_index;
public Byte data_index;
public bool save_data;
public string MAC_addr;
public Byte speed_index;
public string time;
public string num_frame;
public string data_per_frame;
public string textBox6;
public string textBox8;
public Net_Parameter(Byte p_i, Byte d_i, bool s_d, string M_a, Byte s_i, string t, string n_f, string d_p_f, string tB6, string tB8)
{
partten_index = p_i;
data_index = d_i;
save_data = s_d;
MAC_addr = M_a;
speed_index = s_i;
time = t;
num_frame = n_f;
data_per_frame = d_p_f;
textBox6 = tB6;//文件保存地址
textBox8 = tB8;//文件發送地址
}
}
}
主窗體Form2:
namespace GPS222
{
public partial class Form2 : Form
{
Form4 form4 = new Form4();//子窗體Form4
Form7 form7 = new Form7();//子窗體Form7
public Form2()
{
InitializeComponent();
form4.trans_net_parameter = form7.trans_net_parameter;
form4.Show(this.dockPanel1);
}
}
}
子窗體Form7:
using WeifenLuo.WinFormsUI.Docking;
namespace GPS222
{
public partial class Form7 : DockContent
{
Net_Parameter net_parameter=new Net_Parameter(0, 0, false, "", 0, "", "", "", "", "");//私有數據成員,僅可類的內部使用
public Form7()
{
InitializeComponent();
net_parameter.partten_index = 1;
net_parameter.data_index = 1;
net_parameter.save_data = true;
net_parameter.MAC_addr = "123456789012";
net_parameter.speed_index = 1;
net_parameter.time = "1";
net_parameter.num_frame = "12";
net_parameter.data_per_frame = "256";
net_parameter.textBox6 = "1234";
net_parameter.textBox8 ="123";
}
public Net_Parameter trans_net_parameter
{
get
{
return net_parameter;
}
}
}
}
子窗體Form4:
using WeifenLuo.WinFormsUI.Docking;
namespace GPS222
{
public partial class Form4 : DockContent
{
Net_Parameter net_parameter = new Net_Parameter(0, 0, false, "", 0, "", "", "", "", "");
public Form4()
{
InitializeComponent();
}
public Net_Parameter trans_net_parameter
{
set
{
net_parameter = value;
}
get
{
return net_parameter;
}
}
private void gbtnopen_Click(object sender, EventArgs e)
{
//Form4和Form7之間傳值驗證
Text1.Text = net_parameter.textBox6;
Text2.Text = net_parameter.textBox8;
}
}
}
方法四:設置公有靜態變量static
方法五:owner使得子窗體可以直接調用主窗體中函數
###參考: