C#窗体传值实例汇总
发布时间:2020-12-15 05:59:36 所属栏目:百科 来源:网络整理
导读:本文实例汇总了C#窗体传值的方法。供大家参考研究。具体方法如下: 1.静态变量传值,非常简单适合简单的非实例的 复制代码 代码如下: public calss form1:Form{ public static int A; } public class form2:Form{ form1.A=1; } 2.委托传值 复制代码 代
本文实例汇总了C#窗体传值的方法。分享给大家供大家参考。具体方法如下: 1.静态变量传值,非常简单适合简单的非实例的 复制代码 代码如下: public calss form1:Form{ public static int A; } public class form2:Form{ form1.A=1; } 2.委托传值 复制代码 代码如下: public class form1:Form{ public int A{get;set;} public static Action<int> setIntADelForClass;//类的委托 public Action<int>setIntADel //实例的委托 public void setintA(int a){ A=a; } public void form_load(object sender,EventArgs e){ setIntADelForClass=setIntA; setIntADel =setIntA; } } public class form2:Form{ public void setFom1IntA{ form1.setIntADelForClass(10);//通过类的委托将form1 的A变量设置为10 form1 fm1=new form1(); fm1.setIntADel(12);//通过实例的委托将新实例fm1的A变量设置为12 } } 3.使用onwer属性,适合对话框之间的传值 复制代码 代码如下: public class Form1:Form{
public int A{get;set;} private void button1_click(object sender,EventArgs e){ A=10; Form2 fm2=new Form2(); fm2.ShowDialog(this); } } public class Form2:Form{ private void button1_Click(object sender,EventArgs e) { Form1 fm = (Form1)this.Owner; MessageBox.Show(fm.A);//读Form1的A fm.A=11;//写Form1的A } } 当然也可以使用委托继续传值 4.重构窗体构造函数,初始化的时候传值,只适合初始化的适合,不够方便 5.委托+事件的方法 下面代码是一个点击Form1 button 使Form2的button显示Form1.textbox内容 复制代码 代码如下: //--------------------------------------->>--------------------Form1--------------- public partial class Form1 : Form{ public string B //获取textbox1的text { get { return textBox1.Text; } set { textBox1.Text = value; } } public delegate void EventArgsaccept(object sender,acceptEventArgs e);//声明一个事件签名的委托 public static event EventArgsaccept accept;//相当于实例化一个事件 private void button1_Click(object sender,EventArgs e) { acceptEventArgs ae = new acceptEventArgs(); ae.b = B; if (accept != null) { accept(this,ae); } } } } public class acceptEventArgs : EventArgs {//封装EventArgs类,添加可传递的属性 public string b { get; set; } } //------------------->>----------------------------------end code of form1----------- form2的代码,实现一个相同签名的方法,如我们的accept的签名是 方法名(object a,acceptEventArgs b); 复制代码 代码如下: //-------------------------------------->>---------------------------------------code of form2---
public partial class Form2 : Form{ private void Form2_Load(object sender,EventArgs e) { Form1.accept += Form1_accept;//为form1的事件赋值,当form1执行该事件的时候会执行该方法 } void Form1_accept(object sender,acceptEventArgs e) {//实现一个相同方法签名的方法 this.button1.Text = e.b; } } //------------------------>>--------------- 具体的原理,我想因为委托是函数指针所以可以通过传值能保存函数指针的位置?所以可以标记相应的实例的,执行其他实例的方法? 还没看编译原理,发表一下自己看法,不要误导大众 复制代码 代码如下: AppDomain.CurrentDomain.SetData("user","小明");
AppDomain.CurrentDomain.GetData("user"); 希望本文所述对大家的C#程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |