当前位置: 首页 > 编程笔记 >

C#窗体传值实例汇总

扈翰
2023-03-14
本文向大家介绍C#窗体传值实例汇总,包括了C#窗体传值实例汇总的使用技巧和注意事项,需要的朋友参考一下

本文实例汇总了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内容
可以一次性传很多值,步骤是在窗体A中声明一个事件,B窗体中实现相同方法签名的方法为事件赋值,B中回调该方法
Form1的代码:

//--------------------------------------->>--------------------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;           

     }

}

//------------------------>>---------------

具体的原理,我想因为委托是函数指针所以可以通过传值能保存函数指针的位置?所以可以标记相应的实例的,执行其他实例的方法?

还没看编译原理,发表一下自己看法,不要误导大众
6.通过全局数据读写,适合登陆验证

AppDomain.CurrentDomain.SetData("user", "小明");

AppDomain.CurrentDomain.GetData("user");

希望本文所述对大家的C#程序设计有所帮助。

 类似资料:
  • 本文向大家介绍C#实现窗体间传值实例分析,包括了C#实现窗体间传值实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了C#实现窗体间传值的方法。分享给大家供大家参考,具体如下: 1、VS 2005的Visual C# Windows应用程序和Visual C#智能设备Pocket PC 2003设备应用程序。 假设我们需要点击主窗体FMMain中的某一个按钮时打开子窗体FMChild并

  • 本文向大家介绍C#实现窗体间传递数据实例,包括了C#实现窗体间传递数据实例的使用技巧和注意事项,需要的朋友参考一下 本文以实例详述了C#两个窗体之间传递数据的实现方法,具体的操作步骤如下: 1.建立两个窗体,并采用公用变量值传递: 2.使用地址方式传递

  • 本文向大家介绍C#定时关闭窗体实例,包括了C#定时关闭窗体实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#定时关闭窗体的方法,分享给大家供大家参考。具体方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍C#实现子窗体与父窗体通信方法实例总结,包括了C#实现子窗体与父窗体通信方法实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了C#子窗体与父窗体通信方法。分享给大家供大家参考。具体如下: 【第一种方法:】 第一步: 创建接口IForm,父窗体继承这个接口 第二步: 父窗体实现接口中的方法,在实现接口的方法中写入刷新代码 第三步: 在子窗体中调用,刷新的方法 【第二种方法

  • 本文向大家介绍C#实现窗口之间的传值,包括了C#实现窗口之间的传值的使用技巧和注意事项,需要的朋友参考一下 为了解决在多个窗口之间的传值问题,我们可以通过设置静态类和静态变量的办法来实现窗口间值的传递 窗体一代码 窗体2代码 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍C#实现两个窗体之间数值传送的方法,包括了C#实现两个窗体之间数值传送的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现两个窗体之间数值传送的方法。分享给大家供大家参考,具体如下: 以下是本人常用的方法,其实方法很多,但我觉得这两种我比较好理解,要是哪位朋友有比较简单的易懂的其他方法,希望不吝赐教。 方法一: 比如要在FORM2里得到FORM1里的值,先在FORM