c#中窗体与窗体之间值的传递
2020-01-14 09:55
323 查看
方法一:利用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使得子窗体可以直接调用主窗体中函数
###参考:
C#中如何在两个子窗体间传递参数
C#怎么把结构体从A窗体传到B窗体,在B窗体改变结构体的值后并返回到A窗体?
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- c# winform窗体之间传递参数问题总结
- C#窗体之间传递参数
- C#窗体之间传递数据
- C#.NET常见问题(FAQ)-如何在不同窗体之间传递值
- c#WINFROM窗体之间传递参数的解决方案
- c# ArcEngine二次开发之“窗体之间传递AxMapcontrol 变量”
- C# 窗体之间值传递
- c# winform窗体之间传递参数问题总结
- c#winform编程 窗体之间传递参数问题总结(转)
- C#中不同窗体之间的数据传递
- c#winform编程 窗体之间传递参数问题总结(转)
- c#winform编程 窗体之间传递参数问题总结(转)
- c# 窗体之间传递值 --转载
- C#中form窗体之间的传递几个方法学习
- C#中窗体之间的数据传递
- C#窗体之间传递消息和事件
- c# 2个窗体之间传递的简单方法
- C#-窗体之间传递参数
- c# winform窗体之间传递参数的几种方法
- 关于Iframe之间以及与父窗体的值传递