C#如何实现两个WINFORM之间的访问

发表于:2007-05-26来源:作者:点击数: 标签:
在 VB 中我们通常可以通过form1!text1.text等进行窗体之间的访问,但是在C#中我们发现这样是行不同的,通过我这几天的研究,终于想出了进行两个WINFORM之间访问的办法,那就是通过一个中间的类进行实例的控制,代码如下: //============================= F

  在VB中我们通常可以通过form1!text1.text等进行窗体之间的访问,但是在C#中我们发现这样是行不同的,通过我这几天的研究,终于想出了进行两个WINFORM之间访问的办法,那就是通过一个中间的类进行实例的控制,代码如下:
  //=============================
  Form1.cs
  //=============================
  using System;
  using System.Drawing;
  using System.Collections;
  using System.ComponentModel;
  using System.Windows.Forms;
  using System.Data;
  
  namespace WA_Test1
  {
  /// <summary>
  /// 作者:Davi
  /// </summary>
  //委托
  public delegate string chktext(int myInt);
  
  public class Form1 : System.Windows.Forms.Form
  {
  private System.Windows.Forms.Button button1;
  public System.Windows.Forms.TextBox textBox1;
  //public Form1 frm1=new Form1();
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;
  
  public Form1()
  {
  //
  // Windows 窗体设计器支持所必需的
  //
  InitializeComponent();
  
  //
  // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  //
  }
  
  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
  if( disposing )
  {
  if (components != null)
  {
  components.Dispose();
  }
  }
  base.Dispose( disposing );
  }
  
  #region Windows Form Designer generated code
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
  this.button1 = new System.Windows.Forms.Button();
  this.textBox1 = new System.Windows.Forms.TextBox();
  this.SuspendLayout();
  //
  // button1
  //
  this.button1.Location = new System.Drawing.Point(128, 56);
  this.button1.Name = "button1";
  this.button1.Size = new System.Drawing.Size(56, 24);
  this.button1.TabIndex = 0;
  this.button1.Text = "button1";
  this.button1.Click += new System.EventHandler(this.button1_Click);
  //
  // textBox1
  //
  this.textBox1.Location = new System.Drawing.Point(16, 56);
  this.textBox1.Name = "textBox1";
  this.textBox1.Size = new System.Drawing.Size(88, 21);
  this.textBox1.TabIndex = 1;
  this.textBox1.Text = "textBox1";
  //
  // Form1
  //
  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  this.ClientSize = new System.Drawing.Size(304, 117);
  this.Controls.AddRange(new System.Windows.Forms.Control[] {
  this.textBox1,
  this.button1});
  this.MaximizeBox = false;
  this.Name = "Form1";
  this.Text = "Form1";
  this.ResumeLayout(false);
  
  }
  #endregion
  
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
  Form3 frm3=new Form3();
  Application.Run(frm3.GetForm1());
  }
  
  private void button1_Click(object sender, System.EventArgs e)
  {
  Form3 frm3=new Form3();
  (frm3.GetForm2()).Show();
  //frm3.InputBox("Title","please enter some value","20");
  //MessageBox.Show(frm3.InputBox().ToString());
  }
  
  private void button2_Click(object sender, System.EventArgs e)
  {
  //
  }
  
  }
  }
  //=======================================
  Form2.cs
  //=======================================
  using System;
  using System.Drawing;
  using System.Collections;
  using System.ComponentModel;
  using System.Windows.Forms;
  
  namespace WA_Test1
  {
  /// <summary>
  /// 作者:Davi
  /// </summary>
  public class Form2 : System.Windows.Forms.Form
  {
  private System.Windows.Forms.TextBox textBox1;
  private System.Windows.Forms.Button button1;
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;
  
  public Form2()
  {
  //
  // Windows 窗体设计器支持所必需的
  //
  InitializeComponent();
  
  //
  // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  //
  }
  
  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
  if( disposing )
  {
  if(components != null)
  {
  components.Dispose();
  }
  }
  base.Dispose( disposing );
  }
  
  #region Windows Form Designer generated code
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
  this.textBox1 = new System.Windows.Forms.TextBox();
  this.button1 = new System.Windows.Forms.Button();
  this.SuspendLayout();
  //
  // textBox1
  //
  this.textBox1.Location = new System.Drawing.Point(16, 40);
  this.textBox1.Name = "textBox1";
  this.textBox1.Size = new System.Drawing.Size(152, 21);
  this.textBox1.TabIndex = 0;
  this.textBox1.Text = "textBox1";
  //
  // button1
  //
  this.button1.Location = new System.Drawing.Point(56, 72);
  this.button1.Name = "button1";
  this.button1.Size = new System.Drawing.Size(168, 24);
  this.button1.TabIndex = 1;
  this.button1.Text = "更改Form1的TextBox1";
  this.button1.Click += new System.EventHandler(this.button1_Click);
  //
  // Form2
  //
  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  this.ClientSize = new System.Drawing.Size(272, 117);
  this.Controls.AddRange(new System.Windows.Forms.Control[] {
  this.button1,
  this.textBox1});
  this.Name = "Form2";
  this.Text = "Form2";
  this.ResumeLayout(false);
  
  }
  #endregion
  
  private void button1_Click(object sender, System.EventArgs e)
  {
  Form3 frm3=new Form3();
  (frm3.GetForm1()).textBox1.Text=this.textBox1.Text;
  }
  }
  }
  //===============================================
  Form3.cs
  //===============================================
  using System;
  using System.Drawing;
  using System.Collections;
  using System.ComponentModel;
  using System.Windows.Forms;
  
  namespace WA_Test1
  {
  /// <summary>
  /// 作者:Davi
  /// </summary>
  public class Form3
  {
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private static Form1 frm1;
  private static Form2 frm2;
  public Form3()
  {
  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  }
  public void CreateForm1()
  {
  frm1=new Form1();
  }
  public void CreateForm2()
  {
  frm2=new Form2();
  }
  public Form1 GetForm1()
  {
  if(frm1==null)
  {
  CreateForm1();
  }
  return frm1;
  }
  public Form2 GetForm2()
  {
  if(frm2==null)
  {
  CreateForm2();
  }
  return frm2;
  }
  }
  /// <summary>
  /// 输入框窗体
  /// </summary>
  }

原文转自:http://www.ltesting.net