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