源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#窗体传值实例汇总

  • 时间:2021-12-02 04:04 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#窗体传值实例汇总
本文实例汇总了C#窗体传值的方法。分享给大家供大家参考。具体方法如下: [b]1.静态变量传值,非常简单适合简单的非实例的 [/b]
[u]复制代码[/u] 代码如下:
public calss form1:Form{     public static int A; } public class form2:Form{    form1.A=1; }
[b]2.委托传值 [/b]
[u]复制代码[/u] 代码如下:
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   } }
[b]3.使用onwer属性,适合对话框之间的传值 [/b]
[u]复制代码[/u] 代码如下:
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                                         } }
当然也可以使用委托继续传值 [b]4.重构窗体构造函数,初始化的时候传值[/b],只适合初始化的适合,不够方便 [b]5.委托+事件的方法[/b] 下面代码是一个点击Form1 button 使Form2的button显示Form1.textbox内容 可以一次性传很多值,步骤是在窗体A中声明一个事件,B窗体中实现相同方法签名的方法为事件赋值,B中回调该方法 Form1的代码:
[u]复制代码[/u] 代码如下:
//--------------------------------------->>--------------------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);
[u]复制代码[/u] 代码如下:
//-------------------------------------->>---------------------------------------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;                } } //------------------------>>---------------
具体的原理,我想因为委托是函数指针所以可以通过传值能保存函数指针的位置?所以可以标记相应的实例的,执行其他实例的方法? 还没看编译原理,发表一下自己看法,不要误导大众 [b]6.通过全局数据读写,适合登陆验证 [/b]
[u]复制代码[/u] 代码如下:
AppDomain.CurrentDomain.SetData("user", "小明"); AppDomain.CurrentDomain.GetData("user");
希望本文所述对大家的C#程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部