下载此文档

总结计划中窗体间传递数据几种方法.doc


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
该【总结计划中窗体间传递数据几种方法 】是由【泰山小桥流水】上传分享,文档一共【10】页,该文档可以免费在线阅读,需要了解更多关于【总结计划中窗体间传递数据几种方法 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。总结C#中窗体间传达数据的几种方法(由他人的方法整理)
在编写C#windows应用程序的时候我们常常会碰到这类问题,怎么样在两个窗体间传达数据
呢以下是我整理的网上的各样方法,在碰到一个实质问题:
在form1
中翻开一个form2
窗口作
为录入界面,将录入的值经变换后在
form1中显示。
采纳了拜托的方法,能够实现。(与
VC
的回调的应用相像)

问题:经过
form1做一个录入界面
,将里边经过文本框录入的数值复值给
form2中的listview
各列,用3
个举例吧,分别对应
listview的3个列。
能够这么做
,假如两个窗体是在同一个命名空间下
定义一个代理,注意这个代理是全局的:(即同一命名空间下,与Form1,Form2平级的)
publicdelegatevoidMyInvoke(stringItem1,stringItem2,stringItem3);
.);
(this);
而后将Form1的结构函数改成能够接收几个参数的就行了。
,翻开的搜寻对话框是
Form2.
直接在
Form2类中声明一个
Form1

例:Form1f1=newForm1( );
而后就能够经过
f1来调用
Form1
中的域和函数了。其实不是这
样的,你声明的新的Form1
实例不是本来的那个
Form1
对象了,这样操作的是新的
Form1

的域和函数,和最初翻开的
Form1是没相关系的。
我们要做的是把目前的Form1实例传达给Form2,假如是这样的话,问题就很好解决了。
方法1:第一,我们在Form2中定义:
privateForm1mF_Form
我们改正Form2的结构函数为有参数的
publicForm2(Form1myForm)
{
2f2f1fMain.);
(this);
而后将Form1的结构函数改成能够接收几个参数的就行了。
,翻开的搜寻对话框是
Form2.
直接在
Form2类中声明一个
Form1

例:Form1f1=newForm1( );
而后就能够经过
f1来调用
Form1
中的域和函数了。其实不是这
样的,你声明的新的Form1
实例不是本来的那个
Form1
对象了,这样操作的是新的
Form1

的域和函数,和最初翻开的
Form1是没相关系的。
我们要做的是把目前的Form1实例传达给Form2,假如是这样的话,问题就很好解决了。
方法1:第一,我们在Form2中定义:
privateForm1mF_Form
我们改正Form2的结构函数为有参数的
publicForm2(Form1myForm)
{
//
//Windows窗体设计器支持所必要的
//
InitializeComponent( );
=myForm;/////这样在Form1中声明Form2的时候就把Form1的实例传达过来了
//
//TODO:在InitializeComponent调用后增添任何结构函数代码
//
}
在Form1中,我在要用到Form2的地方声明以下:
Form2f2=newForm2(this);////这里的this指的就是Form1目前的实例,也就是把目前Form1
的实例经过Form2的结构函数传达给Form2类(其实在网上看到过比较蠢的方式,就是在构
造函数里面传达要传达的信息如:字符串或是数字等,这样做很有限制性,不可以传达其余的,所
有我们能够直接传达实例,来达成传达更多的信息。)
这样在Form2中使用myForm就能够对本来的Form1窗口进行操作了。可是你要把要操作的
Form1中的域和函数定义成public形式的(这样可能不安全),此时的myForm就是真实的
最开始翻开的Form1了,你能够用这个实例来进行两个窗体的通信了。()
#中供给了窗体间进行通信的现成的属性,呵呵,我们能想到的,微软也想到了,他
们创建的语言其实的确能够说是人性化了。
在Form1类中声明Form2时用以下代码:
Form2f2=newForm2( );//////类Form2中的结构函数不改,仍是无参的
=this;////这里的this指的是类Form1目前的实例。
//也能够使用函数的方法,给目前实例增添一个隶属窗口代码:(f2);
在Form2类的定义中写以下代码:
Form1f1=;
这样f1对应的就是本来的Form1的实例了,也就能够用这个进行通信了。可是仍是要把不一样类
之间接见的域和函数定义成public,哎,安全的确是一个问题!!

这个也是我们常常要用到的一种数据交互方法。
下边是定义的一个类:
usingSystem;
using;
namespaceZZ
{
publicclassAppDatas
{
privatestaticArrayListlistData;
staticAppDatas( )
{
listData=newArrayList( );
("DotNet");
("C#");
("");
("WebService");
("XML");
}
publicstaticArrayListListData
{
get{returnlistData;}
}
publicstaticArrayListGetListData( )
{
returnlistData;
}
}
}
上边包括了一个静态类成员,listData,一个静态结构函数staticAppDatas( ),用来初始化
listData的数据。还有一个静态属性ListData和一个静态GetListData( )方法,他们实现了相同
的功能就是返回listData。
因为前面两篇文章已经讲了好多,这里不细说了,下边是完好的代码:
文件
usingSystem;
using;
using;
using;
namespaceZZ
{
{
publicForm1( )
{
InitializeComponent( );
}
protectedoverridevoidDispose(booldisposing)
{
if(disposing)
if(components!=null)
( );
(disposing);
}
[STAThread]
staticvoidMain( )
{
(newForm1( ));
}
privatevoidInitializeComponent( )
{
( );
="Form1";
="Form1";
(false);
}
privatevoidbuttonEdit_Click(objectsender,
{
Form2formChild=newForm2( );
( );
}
}

e)
}
文件
using;
using;
using;
namespaceZZ
{
{
publicForm2( )
{
InitializeComponent( );
foreach(objectoin
}
protectedoverridevoidDispose(booldisposing)
{
if(disposing)
if(components!=null)
( );
(disposing);
}
privatevoidInitializeComponent( )
{
( );
"Form2";
"Form2";
(false);
}
privatevoidbuttonOK_Click(objectsender,e)
{
( );
}
privatevoidbuttonAdd_Click(objectsender,e)
{
{
}
else
("请输入增添的内容!");
}
privatevoidbuttonDel_Click(objectsender,e)
{
if(index!=-1)
{
}
else
("请选择删除项!");
}
}
}
总结,我以为使用静态类比许多的地方就是把应用程序的配置文件装载到一个静态类里面,让
全部的窗体和其余实例都能够经过静态属性以及静态方法使用这些数据,比方三层结构或多层结
构都能够接见它,而不是在多个实例间传来传去。在这里我们议论的是Windows窗体,其实在
两个不一样的实例间交互数据,都能够采纳三篇文章中的方案实现,除非是这个类独有的属性或着
方法。此刻都讲完了,固然不是什么高妙的东西,可是希望能对一些初学者有所帮助,同时也欢
迎各位朋友进行技术沟通,共同提升。
剖析上边几种方法:
,能够实现。:很好的实现了数据办理与数据显示的分别,即FORM2
(主)显示与FORM1数据办理,(不需要将FORM2的显示放在FORM1中)与VC的回调
的应用有持续性。而且保证了FORM1中要改正的属性的私有性。
、3都是传达主窗口的引用,比较简单易用。能够实现FORM2(主)与FORM1所
有数据的传达(可是需要将要FORM1传达和要改正的数据设为PUBLIC),而这样会存在安全
问题。
拜托方法能够很好地实现数据的保护
精心收集整理,请按实质需求再行改正编写,因文档各样差别排版需调整字体属性及大小

总结计划中窗体间传递数据几种方法 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息