zoukankan      html  css  js  c++  java
  • 页面间传值的⑤种方法

    5、构造函数传值

    第一步 在调用窗体建立构造函数 写入参数ex:

    public Form2(Sting msg):this()  //调用无参的构造函数

    {

    label1.text=msg

    }

    第二步 传值窗体构造调用窗体的实例 ex:

    string txtMsg=textBox1.text;

    Form2   frm2 = new Form2(txtMsg);

    1、属性传值

    1、传值窗体定义属性
    public ChildrenFrm MSg { get; set; }  //子窗体类型的属性

    2、private void ParentFrm_Load(object sender, EventArgs e)
            {
                ChildrenFrm chFrm = new ChildrenFrm();
                MSg = chFrm; //此对象直接赋予给需要传值窗体类型属性
                chFrm.Show();
            
            }

    //注意更改接收窗体控件的属性值为Public

    3private void btnMsg_Click(object sender, EventArgs e)
            {
                MSg.txtMsg.Text = this.txtMsg.Text;
             

            }

    2、方法传值

    1、传值窗体定义属性
     public ChildrenFrm MSg { get; set; }
    2、private void ParentFrm_Load(object sender, EventArgs e)
            {
                ChildrenFrm chFrm = new ChildrenFrm();
                MSg = chFrm; //此对象直接赋予给需要传值窗体类型属性
                chFrm.Show();
             
            }
    
     3、 private void btnMsg_Click(object sender, EventArgs e)
            {
                MSg.StrText(this.txtMsg.Text);
               
            } //注意方法调用接收窗体方法
    1、  public void StrText(string txt)
            {
             
                this.txtMsg.Text = txt;
            } 
    

      

    3、委托传值

    1、主窗体创建委托泛型集合属性
      public Action<string> ShowMsg {get;set;}  //委托类型
    2、 private void ParentFrm_Load(object sender, EventArgs e)
            {      
                Children2 chFrm2 = new Children2();
                ShowMsg += chFrm2.Say;//注意此处对象点传值窗体的方法
                chFrm2.Show();
            }
    3、 private void btnMsg_Click(object sender, EventArgs e)
            {
               
                ShowMsg(this.txtMsg.Text);

            }

    接收窗体方法
    1、  public void Say(string txt)
            {
                this.txtMsg.Text = txt;
            }
    

    //事件传值(最优的选择)事件是委托类型的特殊实例,事件触发只能在类的内部触发

    1、定义事件

     public event EventHandler ShowMsgStr; 

    2、触发事件

    ShowMsgStr(this,new ChangeMsg(){txt=this.txtmsg.text});//this指当前窗体对象;属性初始化器定义类型属性的值

    2.1定义新类继承与EventArgs

    public class ChangeMsg:EvenArgs

    {

    public string txt{get;set;}

    }

    3、主窗体发布事件

    ChildrenFrm chFrm = new ChildrenFrm();//传值窗体对象
                //事件方式
                ShowMsgStr += chFrm.AfterMsg;  //与委托类似传值窗体对象调用子窗体的方法
                chFrm.Show();

    4、子窗体调用

    1、定义方法传值

    public void StrText(string txt)
            {
               
                this.txtMsg.Text = txt;
            }

       public void AfterMsg(object sender, EventArgs e)
            {
                ChangeMsgEvent ch = e as ChangeMsgEvent; //把 父类转换为子类使用
                this.StrText(ch.Txt);//调用当前窗体的方法传入值
            }

  • 相关阅读:
    深入Android 【一】 —— 序及开篇
    Android中ContentProvider和ContentResolver使用入门
    深入Android 【六】 —— 界面构造
    The service cannot be activated because it does not support ASP.NET compatibility. ASP.NET compatibility is enabled for this application. Turn off ASP.NET compatibility mode in the web.config or add the AspNetCompatibilityRequirements attribute to the ser
    Dynamic Business代码片段总结
    对文件的BuildAction以content,resource两种方式的读取
    paraview 3.12.0 windows下编译成功 小记
    百度网盘PanDownload使用Aria2满速下载
    netdata的安装与使用
    用PS给证件照排版教程
  • 原文地址:https://www.cnblogs.com/haimingkaifa/p/5329866.html
Copyright © 2011-2022 走看看