0
点赞
收藏
分享

微信扫一扫

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


在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
 { 
 
 //委托
 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);}
 #endregionprivate 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>
 }
 *欢迎大家和我一起研究。

 

举报

相关推荐

0 条评论