C#-MDI-多窗口通信方式总结

好用的胜质量JavaScript库一望(1)

2012-03-13 14:14 开源中国 开源中国 自我只要评论(0)
字号:T | T

图片 1

本文收集了15个好用之强质量JavaScript库,希望对您有助

AD:

编辑器

1、Code Mirror

图片 2

又平等慢“Online Source
Editor”,基于Javascript,短小精悍,实时在线代码高亮显示,他非是某某富文本编辑器底依附产品,他是多出名的在线代码编辑器的基础库。

视频

2、Html5 media

图片 3

html5media是一个JavaScript音频/视频播放器能够给各级一个浏览器还能够播放在HTML5多媒体标签中定义的差不多媒体文件。
对于非匹配的浏览器,该广播将动用支持Flash的FlowPlayer播放器来顶替。

地图

3、Gmap

图片 4

GMAP3 插件用来将Google
Maps插入到网页中,Google在那产品被都提供了十分便捷的法。但是GMAP3这个jQuery插件提供了进一步便利的计,特别是在使用一些高档功能时(如:overlays和callbacks)。

jQuery图表库

4、jsCharts

图片 5

JScharts
是一个据此来当浏览器上直接绘制图表的JavaScript工具包。支持柱状图,圆饼图以及简单的曲线图。直接将以此库插入网页,然后由
XML 文件要 JavaScript 数组变量调用数据。PNG 格式,兼容所有重点浏览器。

5、High Charts

图片 6

Highcharts是一个做图纸的纯Javascript类库,主要特征如下:

◆ 兼容性:兼容当今有所的浏览器,包括iPhone、IE和火狐等等;

◆ 对个人用户完全免费;

◆ 纯JS,无BS;

◆ 支持大部分的图片类型:直线图,曲线图、区域图、区域曲线图、柱状图、饼装图、散布图……

6、Google Flot

图片 7

让Plotr和PlotKit的迪,Ole Laursen基于jquery开发了一个图纸绘制(WEB
Chart)插件并取名也flot

7、Timeplot

Timeplot是一个因DHTML的AJAX部件,用于创造时间序列、基于时间事件的图形。

图片 8

 

8、Processingjs

图片 9

Processing.js是一个开花之编程语言,在未行使Flash或Java小序的前提下,
可以兑现程序图像、动画及彼此的下。

9、Protovis

图片 10

Protovis 是一个可视化 javaScript 图表生成工具。

10、Ad Safe

图片 11

ADsafe使放置于页面及的客户代码(例如第三方的广告脚论和挂件)安全,ADsafe定义了一个JavaScript的子集,足以令客户脚本具有用之交互性,在此同时防止恶意还是偶尔的毁损和侵犯。

11、Taffydb

图片 12

TaffyDB 是一个免费开源的 JavaScript 库,用于在 Web
上贯彻一个轻量级的数目访问层,也不怕是一个简易的数据库。

12、Evercookie

图片 13

evercookie 是一致效仿想辦法在瀏覽器上预留只是供应紀錄的痕跡的 javscript
library,支援非常多措施,想盡辦法產生類似 HTTP cookie
的效果。目前兑现的章程借助了 flash 的支撑。

13、jStorage-利用JavaScript进行本地化存储

jStorage是一个粗略的用来Prototype,MooTools,jQuery在浏览器端缓存数据(字符串,数字,对象,甚至是XML节点)的包插件。

14、Headjs

HeadJS,
异步JavaScript加载。其最为要命特色就是不单可以依照梯次执行还可并发加载 js

15、Socket

Socket.IO旨在受各种浏览器和移动设备及落实实时app功能,模糊化各种传导体制。

原文:http://www.oschina.net/news/26706/list-of-highly-useful-javascript-libraries-for-developers

总结C#中窗体间传递数据的几乎栽方法 (由别人的艺术整理)

转自:http://blog.csdn.net/daisy423xu/article/details/1579854

 
在编写C#windows应用程序的时刻我们常会面遇见这种问题,怎么样当有限单窗体间传递数据呢?以下是自个儿收拾的网上的各种法子,在遇见一个实际上问题:在form1中开辟一个form2窗口作为录入界面,将录入的值经转换后每当form1中展示。
采用了信托的不二法门,可以实现。(与VC的回调的以一般)

1.好经过信托的办法来解决

问题:通过form1做一个录入界面,将内部通过文本框录入的数值复值给
form2中之listview各列,用3单textbox1.text比方吧,分别对诺listview的3独列。

好这样做,如果个别单窗体是于同一个命名空间下

概念一个代理,注意是代理是大局的:(即同命名空间下,与Form1,Form2平级的)

public delegate void MyInvoke(string Item1,string Item2,string Item3);

 

//在窗体From2惨遭出诸如此类一个回调函数,用于在ListView里添加一个新项的:

private void UpdateListView(string Item1,string Item2,string Item3)

{

    ListView1.Items.Add(Item1);

    ListView1.Items[ListView1.Items.Count – 1].SubItems.Add(Item2);

    ListView1.Items[ListView1.Items.Count – 1].SubItems.Add(Item3);

}

 

//比如说点击Form2的一个按钮弹出Form1进行录入,在点击按钮的轩然大波下:

//把信托传过去

Form1 frmEdit=new Form1(new MyInvoke(UpdateListView));

frmEdit.ShowDialog(this);

 

//在Form1里定义一个特性

private MyInvoke mi=null;

 

当构造函数中吸收这委托:

public Form1(MyInvoke myInvoke)

{

   this.mi=myInvoke;

}

 

//录入数据后,点击OK按钮,在点击事件下:

//回调

this.mi(this.TextBox1.Text,this.TextBox3.Text,this.TextBox3.Text);

this.Close();//关闭Form1

增补:如果自己一旦想重新管form2的价值为form1,

Form1 frmEdit=new Form1(new MyInvoke(UpdateListView),string para1,string
para2…);

frmEdit.ShowDialog(this);

接下来以Form1的构造函数改成为可以收到几只参数的便尽了。

 

2.假如主框架为Form1,打开的追寻对话框是Form2.直以Form2类中阐明一个Form1实例:Form1
f1=new
Form1();然后就好透过f1来调用Form1中之地域和函数了。其实不是这般的,你发明的新的Form1实例不是原来的很Form1对象了,这样操作的是新的Form1中之地域和函数,和处女打开的Form1是绝非关联之。

咱设召开的凡管当前之Form1实例传递给Form2,如果是这样的话,问题就是挺好解决了。

方法1:首先,我们在Form2中定义:

private Form1 mF_Form

咱反Form2的构造函数为有参数的

public Form2 ( Form1 myForm )
{
//
// Windows 窗体设计器支持所必备的
//
InitializeComponent ( ) ;
this.mF_Form  = myForm ;  
/////这样在Form1中申明Form2的时刻即便把Form1的实例传递过来了
//
// TODO: 在 InitializeComponent 调用后补充加其它构造函数代码
//
}

当Form1中,我当 要用到Form2的地方申明如下:

Form2 f2=new 
Form2(this);////这里的this指的饶是Form1当前之实例,也不怕是拿当下Form1的实例通过Form2的构造函数传递给Form2类(其实以网上看到过比笨的章程,就是在构造函数里面传递要传送的音一旦:字符串或是数字相当于,这样做大有局限性,不可知传递其他的,所有我们好直接传送实例,来形成传递更多的音信。)

如此这般在Form2中采用myForm 就可对原的Form1窗口进行操作了。但是你若管要操作的Form1中的地段和函数定义成public形式的(如此这般或许不安全),此时的myForm就是确实的卓绝开头打开的Form1了,你可以就此之实例来进展有限只窗体的通讯了。
()

3.其实C#中提供了窗体间进行报道的现的性能,呵呵,我们会体悟的,微软吗想开了,他们创设的言语其实诚可说凡是人性化了。

以Form1类中申明Form2时用如下代码:

Form2 f2=new Form2();//////类Form2中之构造函数不转,还是无参的

f2.owner=this;////这里的this指的凡相近Form1当前之实例。

//也可以使用函数的方,给当下实例添加一个专属窗口 
代码:this.AddOwnedForm(f2);

在Form2类的定义着描绘如下代码:

Form1 f1=this.owner;

如此这般f1针对承诺之饶是原先的Form1的实例了,也就算得就此者进行报道了。但是还是要将未同类之间访问的所在和函数定义成public,哎,安全的确是一个问题!!

 

  4.以静态类
    这个吧是咱们常要因此到之同一种植多少交互方式。

脚是概念之一个近似:

using System;

using System.Collections;

namespace ZZ

{

     public class AppDatas

     {

         private static ArrayList listData;

         static AppDatas()

         {

              listData = new ArrayList();

              listData.Add(“DotNet”);

              listData.Add(“C#”);

              listData.Add(“Asp.net”);

              listData.Add(“WebService”);

              listData.Add(“XML”);

         }

         public static ArrayList ListData

         {

              get{return listData;}

         }

         public static ArrayList GetListData()

         {

              return listData;

         }

     }

}

方包含了一个静态类成员,listData,一个静态构造函数static
AppDatas(),用来初始化listData的多寡。还有一个静态属性ListData和一个静态GetListData()方法,他们实现了一如既往的功能就是是回去listData。

由前两首稿子曾说了众多,这里不细瞧说了,下面是整的代码:

Form1.cs文件

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

namespace ZZ

{

     public class Form1 : System.Windows.Forms.Form

     {

         private System.Windows.Forms.Button buttonEdit;

         private System.Windows.Forms.ListBox listBoxFrm1;

         private System.ComponentModel.Container components = null;

         public Form1()

         {

              InitializeComponent();

              this.listBoxFrm1.DataSource = AppDatas.ListData;

             

         }

         protected override void Dispose( bool disposing )

         {

              if( disposing )

                   if(components != null)

                       components.Dispose();

              base.Dispose( disposing );

         }

         [STAThread]

         static void Main()

         {

              Application.Run(new Form1());

         }

         private void InitializeComponent()

         {

              this.buttonEdit = new System.Windows.Forms.Button();

              this.listBoxFrm1 = new System.Windows.Forms.ListBox();

              this.SuspendLayout();

              this.buttonEdit.Location = new System.Drawing.Point(128,
108);

              this.buttonEdit.Name = “buttonEdit”;

              this.buttonEdit.TabIndex = 1;

              this.buttonEdit.Text = “修改”;

              this.buttonEdit.Click += new
System.EventHandler(this.buttonEdit_Click);

              this.listBoxFrm1.ItemHeight = 12;

              this.listBoxFrm1.Location = new System.Drawing.Point(12,
8);

              this.listBoxFrm1.Name = “listBoxFrm1”;

              this.listBoxFrm1.Size = new System.Drawing.Size(108, 124);

              this.listBoxFrm1.TabIndex = 2;

              this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

              this.ClientSize = new System.Drawing.Size(208, 141);

              this.Controls.Add(this.listBoxFrm1);

              this.Controls.Add(this.buttonEdit);

              this.Name = “Form1”;

              this.Text = “Form1”;

              this.ResumeLayout(false);

         }

         private void buttonEdit_Click(object sender, System.EventArgs
e)

         {

              Form2 formChild = new Form2();

              formChild.ShowDialog();

              this.listBoxFrm1.DataSource = null;

              this.listBoxFrm1.DataSource = AppDatas.ListData;

         }

     }

}

 

Form2.cs文件

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

namespace ZZ

{

     public class Form2 : System.Windows.Forms.Form

     {

         private System.Windows.Forms.Button buttonOK;

         private System.ComponentModel.Container components = null;

         private System.Windows.Forms.ListBox listBoxFrm2;

         private System.Windows.Forms.Button buttonAdd;

         private System.Windows.Forms.Button buttonDel;

         private System.Windows.Forms.TextBox textBoxAdd;

         public Form2()

         {

              InitializeComponent();

              foreach(object o in AppDatas.ListData)

                   this.listBoxFrm2.Items.Add(o);

         }

         protected override void Dispose( bool disposing )

         {

              if( disposing )

                   if(components != null)

                       components.Dispose();

              base.Dispose( disposing );

         }

         private void InitializeComponent()

         {

              this.buttonOK = new System.Windows.Forms.Button();

              this.listBoxFrm2 = new System.Windows.Forms.ListBox();

              this.buttonAdd = new System.Windows.Forms.Button();

              this.buttonDel = new System.Windows.Forms.Button();

              this.textBoxAdd = new System.Windows.Forms.TextBox();

              this.SuspendLayout();

              this.buttonOK.Location = new System.Drawing.Point(188,
108);

              this.buttonOK.Name = “buttonOK”;

              this.buttonOK.TabIndex = 0;

              this.buttonOK.Text = “确定”;

              this.buttonOK.Click += new
System.EventHandler(this.buttonOK_Click);

              this.listBoxFrm2.ItemHeight = 12;

              this.listBoxFrm2.Location = new System.Drawing.Point(8,
8);

              this.listBoxFrm2.Name = “listBoxFrm2”;

              this.listBoxFrm2.Size = new System.Drawing.Size(168, 124);

              this.listBoxFrm2.TabIndex = 2;

              this.buttonAdd.Location = new System.Drawing.Point(188,
44);

              this.buttonAdd.Name = “buttonAdd”;

              this.buttonAdd.TabIndex = 3;

              this.buttonAdd.Text = “增加”;

              this.buttonAdd.Click += new
System.EventHandler(this.buttonAdd_Click);

              this.buttonDel.Location = new System.Drawing.Point(188,
76);

              this.buttonDel.Name = “buttonDel”;

              this.buttonDel.TabIndex = 4;

              this.buttonDel.Text = “删除”;

              this.buttonDel.Click += new
System.EventHandler(this.buttonDel_Click);

              this.textBoxAdd.Location = new System.Drawing.Point(188,
12);

              this.textBoxAdd.Name = “textBoxAdd”;

              this.textBoxAdd.Size = new System.Drawing.Size(76, 21);

              this.textBoxAdd.TabIndex = 5;

              this.textBoxAdd.Text = “”;

              this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

              this.ClientSize = new System.Drawing.Size(272, 141);

              this.Controls.Add(this.textBoxAdd);

              this.Controls.Add(this.buttonDel);

              this.Controls.Add(this.buttonAdd);

              this.Controls.Add(this.listBoxFrm2);

              this.Controls.Add(this.buttonOK);

              this.Name = “Form2”;

              this.Text = “Form2”;

              this.ResumeLayout(false);

         }

         private void buttonOK_Click(object sender, System.EventArgs
e)
         {
              this.Close();
         }

         private void buttonAdd_Click(object sender, System.EventArgs
e)

         {

              if(this.textBoxAdd.Text.Trim().Length>0)

              {

                   AppDatas.ListData.Add(this.textBoxAdd.Text.Trim());

                  
this.listBoxFrm2.Items.Add(this.textBoxAdd.Text.Trim());

              }

              else

                   MessageBox.Show(“请输入添加的始末!”);

             

         }

         private void buttonDel_Click(object sender, System.EventArgs
e)

         {

              int index = this.listBoxFrm2.SelectedIndex;

              if(index!=-1)

              {

                    AppDatas.ListData.RemoveAt(index);

                   this.listBoxFrm2.Items.RemoveAt(index);

              }

              else

                   MessageBox.Show(“请捎去项!”);

         }

     }

}    

    
总结,我认为使静态类比较多的地方便是拿应用程序的布置文件装载到一个静态类里面,让具有的窗体和另实例都可通过静态属性与静态方法使用这些数量,比如三层构造还是多重合组织还足以看它,而休是在多单实例之中传来传去。在此我们讨论的凡Windows窗体,其实当少单例外的实例之中相互数据,都得下三首文章被之方案实现,除非是其一近乎特有的习性或正办法。现在犹谈了了,虽然不是啊奥秘的物,但是要会对片新家有所帮助,同时也接各位朋友进行技术交流,共同提高。

 

 

剖析者几乎种植办法:

1. 
应用了信托的办法,可以实现。:很好之落实了多少处理以及数展示的诀别,即FORM2(主)显示与FORM1数据处理,(不需要以FORM2的来得位于FORM1中)与VC的回调的行使来可持续性。并且保证了FORM1中要修改的习性之私有性。

 

2. 
方法2、3都是传递主窗口的援,比较简单易用。可以兑现FORM2(主)与FORM1所发生数据的传递(不过需要用设FORM1传递与要改的数码设为PUBLIC),而这样见面设有安全问题。

 

信托方可充分好地促成数量的护

 

总结C#中窗体间传递数据的几栽办法(由别人的法子整理)

 

 
在编写C#windows应用程序的时光咱们经常会面逢这种题材,怎么样当有限只窗体间传递数据呢?以下是本人整理的网上的各种艺术,在遇到一个实在问题:在form1中开辟一个form2窗口作为录入界面,将录入的值经转换后当form1中显得。
采用了托的办法,可以实现。(与VC的回调的采用一般)

1.足通过信托的章程来化解

题材:通过form1做一个录入界面,将中间通过文本框录入的数值复值给
form2中之listview各列,用3独textbox1.text比喻吧,分别指向承诺listview的3单列。

得这么做,如果简单独窗体是以跟一个命名空间下

概念一个代理,注意这个代理是大局的:(即同命名空间下,与Form1,Form2平级的)

public delegate void MyInvoke(string Item1,string Item2,string Item3);

 

//在窗体From2着生出如此一个回调函数,用于在ListView里添加一个新项的:

private void UpdateListView(string Item1,string Item2,string Item3)

{

    ListView1.Items.Add(Item1);

    ListView1.Items[ListView1.Items.Count – 1].SubItems.Add(Item2);

    ListView1.Items[ListView1.Items.Count – 1].SubItems.Add(Item3);

}

 

//比如说点击Form2的一个按钮弹出Form1进行录入,在点击按钮的风波下:

//把信托传过去

Form1 frmEdit=new Form1(new MyInvoke(UpdateListView));

frmEdit.ShowDialog(this);

 

//在Form1里定义一个性质

private MyInvoke mi=null;

 

于构造函数中接收这委托:

public Form1(MyInvoke myInvoke)

{

   this.mi=myInvoke;

}

 

//录入数据后,点击OK按钮,在点击事件下:

//回调

this.mi(this.TextBox1.Text,this.TextBox3.Text,this.TextBox3.Text);

this.Close();//关闭Form1

填补:如果本身只要想再也把form2的价为form1,

Form1 frmEdit=new Form1(new MyInvoke(UpdateListView),string para1,string
para2…);

frmEdit.ShowDialog(this);

然后用Form1的构造函数改成为可以吸收几个参数的就是执行了。

 

2.假如主框架为Form1,打开的觅对话框是Form2.直接在Form2类中说明一个Form1实例:Form1
f1=new
Form1();然后就是得经f1来调用Form1中之地面和函数了。其实不是这么的,你发明的新的Form1实例不是本来的那个Form1对象了,这样操作的凡新的Form1中之地面和函数,和正打开的Form1是无提到之。

我们若做的凡把当下底Form1实例传递给Form2,如果是这样的话,问题即异常好解决了。

方法1:首先,我们在Form2中定义:

private Form1 mF_Form

我们转移Form2的构造函数为产生参数的

public Form2 ( Form1 myForm )
{
//
// Windows 窗体设计器支持所不可或缺的
//
InitializeComponent ( ) ;
this.mF_Form  = myForm ;  
/////这样在Form1中申明Form2的时就拿Form1的实例传递过来了
//
// TODO: 在 InitializeComponent 调用后补加任何构造函数代码
//
}

当Form1中,我于 要用到Form2的地方申明如下:

Form2 f2=new 
Form2(this);////这里的this指的虽是Form1当前底实例,也即是将目前Form1的实例通过Form2的构造函数传递给Form2类(其实在网上看了比较笨的计,就是当构造函数里面传递要传送的信而:字符串或是数字相当于,这样做老大有局限性,不克传递其他的,所有我们得一直传送实例,来好传递更多的音。)

诸如此类于Form2中以myForm 就好本着原先的Form1窗口进行操作了。但是你要将要操作的Form1中的处和函数定义成public形式的(诸如此类可能未安全),此时之myForm就是的确的无比初步打开的Form1了,你得据此这实例来进行简单独窗体的报导了。
()

3.其实C#着提供了窗体间开展报道的备的特性,呵呵,我们会体悟的,微软呢想开了,他们创造的言语其实真的可以说凡是人性化了。

于Form1类中申明Form2时用如下代码:

Form2 f2=new Form2();//////类Form2中之构造函数不改变,还是无参的

f2.owner=this;////这里的this指的凡近乎Form1当前的实例。

//也可采取函数的艺术,给当下实例添加一个直属窗口 
代码:this.AddOwnedForm(f2);

每当Form2类的概念着形容如下代码:

Form1 f1=this.owner;

诸如此类f1针对性诺之虽是原本的Form1的实例了,也就是足以为此之进行报道了。但是还是如果把不同类间访问的地域和函数定义成public,哎,安全的确是一个题材!!

 

  4.采取静态类
    这个呢是我们常常要就此到之如出一辙栽多少交互方式。

下是概念的一个类似:

using System;

using System.Collections;

namespace ZZ

{

     public class AppDatas

     {

         private static ArrayList listData;

         static AppDatas()

         {

              listData = new ArrayList();

              listData.Add(“DotNet”);

              listData.Add(“C#”);

              listData.Add(“Asp.net”);

              listData.Add(“WebService”);

              listData.Add(“XML”);

         }

         public static ArrayList ListData

         {

              get{return listData;}

         }

         public static ArrayList GetListData()

         {

              return listData;

         }

     }

}

方包含了一个静态类成员,listData,一个静态构造函数static
AppDatas(),用来初始化listData的数。还有一个静态属性ListData和一个静态GetListData()方法,他们落实了平的功效就是是归listData。

鉴于前两篇稿子都出口了重重,这里不细说了,下面是一体化的代码:

Form1.cs文件

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

namespace ZZ

{

     public class Form1 : System.Windows.Forms.Form

     {

         private System.Windows.Forms.Button buttonEdit;

         private System.Windows.Forms.ListBox listBoxFrm1;

         private System.ComponentModel.Container components = null;

         public Form1()

         {

              InitializeComponent();

              this.listBoxFrm1.DataSource = AppDatas.ListData;

             

         }

         protected override void Dispose( bool disposing )

         {

              if( disposing )

                   if(components != null)

                       components.Dispose();

              base.Dispose( disposing );

         }

         [STAThread]

         static void Main()

         {

              Application.Run(new Form1());

         }

         private void InitializeComponent()

         {

              this.buttonEdit = new System.Windows.Forms.Button();

              this.listBoxFrm1 = new System.Windows.Forms.ListBox();

              this.SuspendLayout();

              this.buttonEdit.Location = new System.Drawing.Point(128,
108);

              this.buttonEdit.Name = “buttonEdit”;

              this.buttonEdit.TabIndex = 1;

              this.buttonEdit.Text = “修改”;

              this.buttonEdit.Click += new
System.EventHandler(this.buttonEdit_Click);

              this.listBoxFrm1.ItemHeight = 12;

              this.listBoxFrm1.Location = new System.Drawing.Point(12,
8);

              this.listBoxFrm1.Name = “listBoxFrm1”;

              this.listBoxFrm1.Size = new System.Drawing.Size(108, 124);

              this.listBoxFrm1.TabIndex = 2;

              this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

              this.ClientSize = new System.Drawing.Size(208, 141);

              this.Controls.Add(this.listBoxFrm1);

              this.Controls.Add(this.buttonEdit);

              this.Name = “Form1”;

              this.Text = “Form1”;

              this.ResumeLayout(false);

         }

         private void buttonEdit_Click(object sender, System.EventArgs
e)

         {

              Form2 formChild = new Form2();

              formChild.ShowDialog();

              this.listBoxFrm1.DataSource = null;

              this.listBoxFrm1.DataSource = AppDatas.ListData;

         }

     }

}

 

Form2.cs文件

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

namespace ZZ

{

     public class Form2 : System.Windows.Forms.Form

     {

         private System.Windows.Forms.Button buttonOK;

         private System.ComponentModel.Container components = null;

         private System.Windows.Forms.ListBox listBoxFrm2;

         private System.Windows.Forms.Button buttonAdd;

         private System.Windows.Forms.Button buttonDel;

         private System.Windows.Forms.TextBox textBoxAdd;

         public Form2()

         {

              InitializeComponent();

              foreach(object o in AppDatas.ListData)

                   this.listBoxFrm2.Items.Add(o);

         }

         protected override void Dispose( bool disposing )

         {

              if( disposing )

                   if(components != null)

                       components.Dispose();

              base.Dispose( disposing );

         }

         private void InitializeComponent()

         {

              this.buttonOK = new System.Windows.Forms.Button();

              this.listBoxFrm2 = new System.Windows.Forms.ListBox();

              this.buttonAdd = new System.Windows.Forms.Button();

              this.buttonDel = new System.Windows.Forms.Button();

              this.textBoxAdd = new System.Windows.Forms.TextBox();

              this.SuspendLayout();

              this.buttonOK.Location = new System.Drawing.Point(188,
108);

              this.buttonOK.Name = “buttonOK”;

              this.buttonOK.TabIndex = 0;

              this.buttonOK.Text = “确定”;

              this.buttonOK.Click += new
System.EventHandler(this.buttonOK_Click);

              this.listBoxFrm2.ItemHeight = 12;

              this.listBoxFrm2.Location = new System.Drawing.Point(8,
8);

              this.listBoxFrm2.Name = “listBoxFrm2”;

              this.listBoxFrm2.Size = new System.Drawing.Size(168, 124);

              this.listBoxFrm2.TabIndex = 2;

              this.buttonAdd.Location = new System.Drawing.Point(188,
44);

              this.buttonAdd.Name = “buttonAdd”;

              this.buttonAdd.TabIndex = 3;

              this.buttonAdd.Text = “增加”;

              this.buttonAdd.Click += new
System.EventHandler(this.buttonAdd_Click);

              this.buttonDel.Location = new System.Drawing.Point(188,
76);

              this.buttonDel.Name = “buttonDel”;

              this.buttonDel.TabIndex = 4;

              this.buttonDel.Text = “删除”;

              this.buttonDel.Click += new
System.EventHandler(this.buttonDel_Click);

              this.textBoxAdd.Location = new System.Drawing.Point(188,
12);

              this.textBoxAdd.Name = “textBoxAdd”;

              this.textBoxAdd.Size = new System.Drawing.Size(76, 21);

              this.textBoxAdd.TabIndex = 5;

              this.textBoxAdd.Text = “”;

              this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

              this.ClientSize = new System.Drawing.Size(272, 141);

              this.Controls.Add(this.textBoxAdd);

              this.Controls.Add(this.buttonDel);

              this.Controls.Add(this.buttonAdd);

              this.Controls.Add(this.listBoxFrm2);

              this.Controls.Add(this.buttonOK);

              this.Name = “Form2”;

              this.Text = “Form2”;

              this.ResumeLayout(false);

         }

         private void buttonOK_Click(object sender, System.EventArgs
e)
         {
              this.Close();
         }

         private void buttonAdd_Click(object sender, System.EventArgs
e)

         {

              if(this.textBoxAdd.Text.Trim().Length>0)

              {

                   AppDatas.ListData.Add(this.textBoxAdd.Text.Trim());

                  
this.listBoxFrm2.Items.Add(this.textBoxAdd.Text.Trim());

              }

              else

                   MessageBox.Show(“请输入添加的情!”);

             

         }

         private void buttonDel_Click(object sender, System.EventArgs
e)

         {

              int index = this.listBoxFrm2.SelectedIndex;

              if(index!=-1)

              {

                    AppDatas.ListData.RemoveAt(index);

                   this.listBoxFrm2.Items.RemoveAt(index);

              }

              else

                   MessageBox.Show(“请捎去项!”);

         }

     }

}    

    
总结,我觉得使静态类比较多之地方即是管应用程序的配备文件装载至一个静态类里面,让所有的窗体和其他实例都得通过静态属性和静态方法使用这些数据,比如三层结构或多重合构造都得以拜它,而休是以差不多个实例之中传来传去。在此处我们谈谈的是Windows窗体,其实在个别个不等之实例之中互相数据,都足以使三篇稿子被的方案实现,除非是这个看似特有的性质或正在办法。现在都称了了,虽然未是什么奥秘的物,但是要能对一些初家有所帮助,同时为接各位朋友进行技术交流,共同提高。

 

 

分析者几乎种植办法:

1. 
行使了信托的方,可以实现。:很好之落实了数额处理和数量显示的诀别,即FORM2(主)显示和FORM1数据处理,(不待将FORM2的来得身处FORM1中)与VC的回调的利用来可持续性。并且保证了FORM1中要修改的性质的私有性。

 

2. 
方法2、3都是传递主窗口的援,比较简单易用。可以实现FORM2(主)与FORM1所生多少的传递(不过用用如FORM1传递与而修改的多寡设为PUBLIC),而这般见面存在安全题材。

 

信托方可死好地促成数量的保障

 


http://developer.51cto.com/art/201203/323308.htm

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图