关于C#窗口的传值总结.docx

上传人:b****5 文档编号:6639926 上传时间:2023-01-08 格式:DOCX 页数:7 大小:16.88KB
下载 相关 举报
关于C#窗口的传值总结.docx_第1页
第1页 / 共7页
关于C#窗口的传值总结.docx_第2页
第2页 / 共7页
关于C#窗口的传值总结.docx_第3页
第3页 / 共7页
关于C#窗口的传值总结.docx_第4页
第4页 / 共7页
关于C#窗口的传值总结.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

关于C#窗口的传值总结.docx

《关于C#窗口的传值总结.docx》由会员分享,可在线阅读,更多相关《关于C#窗口的传值总结.docx(7页珍藏版)》请在冰豆网上搜索。

关于C#窗口的传值总结.docx

关于C#窗口的传值总结

C#窗体间传值的总结

假设我们需要点击主窗体FMMain中的某一个按钮时打开子窗体FMChild并将某一个值传给子窗体FMChild,一般情况下,我们点击按钮显示子窗体FMChild的代码为:

FMChildfmChild=newFMChild();

fmChild.ShowDialog();

fmChild.Dispose();

如果我们需要将主窗体FMMain中的stringstrValueA的值传给FMChild,那么我们首先对strValueA进行如下处理:

privatestringstrValueA;

publicstringStrValueA

{

get

{

returnstrValueA;

}

set

{

strValueA=value;

}

}

使其成为主窗体FMMain的一个属性,接着修改显示子窗体的代码为以下两种的其中一种。

方法一:

FMChildfmChild=newFMChild();

fmChild.ShowDialog(this);

fmChild.Dispose();

方法二:

FMChildfmChild=newFMChild();

FMChild.Owner=this;

fmChild.ShowDialog();

fmChild.Dispose();

然后在修改子窗体FMChild中申明一个主窗体FMMain对象,

FMMainfmMain;

在需要使用主窗体FMMain的stringstrValueA的地方加上如下代码:

fmMain=(FMMain)this.Owner;

这样,就可以获得主窗体FMMain中strValueA的值了。

这时,如果你需要将子窗体FMChild中的stringstrValueB传给主窗体FMMain,同样处理stringstrValueB。

privatestringstrValueB;

publicstringStrValueB

{

get{returnstrValueB;}

set{strValueB=value;}

}

那么你在关闭子窗体代码fmChild.Dispose();后,可以写一些代码来保存或者处理FMChild的strValueB,例如:

stringstrTmp=fmChild.StrValueB;

注意,在VisualC#智能设备PocketPC2003设备应用程序中显示子窗体FMChild只能使用:

FMChildfmChild=newFMChild();FMChild.Owner=this;fmChild.ShowDialog();fmChild.Dispose();

在VisualC#智能设备PocketPC2003的设备应用程序中ShowDialog()没有重载。

C#窗体间传值的几种方法

调用窗体(父):

Form1,被调用窗体(子):

Form2

方法1:

所有权法

//Form1:

//需要有一个公共的刷新方法

publicvoidRefresh_Method()

{

//...

}

//在调用Form2时,要把Form2的所有者设为Form1

Form2f2=newForm2();

f2.Owner=this;

f2.ShowDialog();

//Form2:

//在需要对其调用者(父)刷新时

Form1f1;

f1=(Form1)this.Owner;

f1.Refresh_Method();

方法2:

自身传递法

//Form1:

//需要有一个公共的刷新方法

publicvoidRefresh_Method()

{

//...

}

Form2f2=newForm2();

f2.ShowDialog(this);

//Form2:

privateForm1p_f1;

publicForm2(Form1f1)

{

InitializeComponent();

p_f1=f1;

}

//刷新时

p_f1.Refresh_Method();

方法3:

属性法

//Form1:

//需要有一个公共的刷新方法

publicvoidRefresh_Method()

{

//...

}

//调用时

Form2f2=newForm2();

f2.P_F1=this;

f2.Show();

//Form2:

privateForm1p_f1;

publicForm1P_F1

{

get{returnp_f1;}

set{p_f1=value;}

}

//刷新时

p_f1.Refresh_Method();

方法4:

委托法

//声明一个委托

publicdelegatevoidDisplayUpdate();

//Form1:

//需要有一个公共的刷新方法

publicvoidRefresh_Method()

{

//...

}

//调用时

Form2f2=newForm2();

f2.ShowUpdate+=newDisplayUpdate(Refresh_Method);

f2.Show();

//Form2:

//声明事件

publiceventDisplayUpdateShowUpdate;

//刷新时,放在需要执行刷新的事件里

ShowUpdate();

Form1中放一个Label1,一个Button1,Form1为主窗口,当点击Button1时,执行:

Form2f2=newForm2();

f2.ShowDialog(this);

Form2中放一个TextBox1,一个Button1,当点击Button1时执行:

Form1f1=(Form1)this.Owner;

f1.Label1.Text=this.TextBox1.Text;

注意:

Form1中的label1要设为public

用C#实现两个WinForm间的传值

实现的思路:

    从Form1传递到Form2:

2个窗体即两个类,两个窗体间的数据传送,可以采用构造函数来实现。

    从Form2返回到Form1,并传递数据:

实例化Form2后,打f2用ShowDialog()方法,然后等待f2关闭时再回传数据到Form1。

实现步骤及代码:

     1:

新建两个窗口:

Form1,Form2;

     2:

打开Form2,添加一个textBox:

textBox1;添加一个Button:

button1;然后添加一个构造函数:

       //定义一个变量,用来传值。

       publicstringreturnValue;

       publicForm2(stringtxtValue)

       {

           InitializeComponent();

           this.textBox1.Text=txtValue;

       }

然后在button1的单击事件中添加如下代码:

       privatevoidbutton1_Click(objectsender,EventArgse)

       {

           returnValue=this.textBox1.Text;

           this.Close();

       }

     3:

Form1中添加一个textBox:

textBox1;添加一个Button:

button1;然后在button1的单击事件中添加如下代码:

       privatevoidbutton1_Click(objectsender,EventArgse)

       {

           stringtxtValue=this.textBox1.Text;

           Form2f2=newForm2(txtValue);

           f2.ShowDialog();

           this.textBox1.Text=f2.returnValue;

       }

Form1中(父窗口:

publicclassForm1:

System.Windows.Forms.Form

{

     privateSystem.Windows.Forms.ButtonbtnOpen;

     publicSystem.Windows.Forms.TextBoxtxtContent;//注意是public

      ........

      ........

     [STAThread]

    staticvoidMain()

    {

         Application.Run(newForm1());

    }

   privatevoidbtnOpen_Click(objectsender,System.EventArgse)

   {

      Form2frm=newForm2(this);

      frm.ShowDialog();

   }

}

Form2中(子窗口)

publicclassForm2:

System.Windows.Forms.Form

{

          privateSystem.Windows.Forms.Buttonbutton1;

          privateSystem.Windows.Forms.TextBoxtxtValue;

          privateForm_parentForm=null;

      publicForm2()

      {  

           InitializeComponent();

      }

     publicForm2(FormparentForm)

     {

         InitializeComponent();

         this._parentForm=parentForm;

     }

          ........

         ........

  //更新父窗口中文本框中的值!

    privatevoidbutton1_Click(objectsender,System.EventArgse)

    {

          ((Form1)_parentForm).txtContent.Text=this.txtValue.Text;

    }

}

一个小例子:

将一个窗体下TextBox中的文本内容赋值给另一个窗体下的ListView中所对应的列。

方法如下:

将TextBox(命名为djzclx1)所在窗体Query_Djzclx.cs设置一个属性

privatestringVarvalue;

publicstringvarvalue

{

get

           {

               returnVarvalue;//返回值

           }

}

添加button1,其DialogResult属性设置为OK;

然后在button1的单价事件里把TextBOx的值赋给Varvalue(Varvalue=djzclx1;),这样该窗体的属性varvalue就有TExtBox的值了。

在ListView所在窗体添加button1,其单击事件添加如下代码:

privatevoidCkDjzclx_Click(objectsender,EventArgse)

       {

           Query_DjzclxnewFrmDjzclx=newQuery_Djzclx();//实例化对话框窗体

           if(newFrmDjzclx.ShowDialog()==DialogResult.OK)//如果对话框窗体点击的DialogoResult属性是“OK”的按钮

           {

               ListView.Text=newFrmDjzclx.varvalue;//这句的意思是这样,就是把属性varvalue的值回传给ListView。

           }

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1