在.net中轻松掌握Windows窗体间的数据交互(三)

在.net中轻松掌握Windows窗体间的数据交互(三)

Author:  From:Internet

在.net中轻松掌握Windows窗体间的数据交互(三) 
zhzuo(秋枫) 
      在第一篇和第二篇文章中我们使用带参数的构造函数、属性以及方法实现了数据的交互,接下来要讲的是使用静态类来完成窗体间的数据交互。这个也是我们经常要用到的一种数据交互方法。 
    三.使用静态类 
下面是定义的一个类: 
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("请选择删除项!"); 
        } 
    } 

    总结,我认为使用静态类比较多的地方就是把应用程。

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Visual Studio.NET] 的这些文章也感兴趣:

用正则表达式得到网页上的链接
Visual Studio 2008 中可能存在的Bug(不断更新中)
Assembly学习心得(1)
.Net Compact Framework 基础篇之Exception
在没有安装.NET Framework框架的windows系统上部署.NET程序
P/invoke in .NET Compact Framework
.NET框架图解之三:System.IO
Mono v1.2.51 - 开源版本的.NET框架
.NET图像编程(GDI )自制“小屏保”
Moq——.NET的Mocking库