C#操作非本窗体的控件

在一个窗体中刷新另一个窗体,并改变另一个窗体中的文本框的内容。

 

程序运行时,显示的是窗体Form1,上面有一个文本框textBox1和一个命令按钮button1,

如图:

 C#操作非本窗体的控件_第1张图片

 

为工程添加一个窗体Form2,上面只有一个命令按钮button1,如图:

 

 

C#操作非本窗体的控件_第2张图片

 

解决方案浏览器如图:

 

 

单击Form1中的命令按钮,将显示Form2,然后单击Form2上的命令按钮,

将更新Form1的标题为“你更新了本窗体的标题!”,更新Form1中的文本框的内容为:“你更新了本文本框的内容!”,并刷新Form1。

 

如图:

 

 

Form1的代码如下:

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

namespace C_Sharp中窗口A如何刷新窗口B

{

     public partial class Form1 : Form

     {

         public Form1()

         {

              InitializeComponent();

         }

         private void button1_Click(object sender, EventArgs e)

         {

              Form2 form2 = new Form2();    //构造form2

              form2.Owner = this;           //令form2的父窗体为Form1

              form2.ShowDialog();           //显示form2

         }

     }

}

 

Form2的代码如下:

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

 

namespace C_Sharp中窗口A如何刷新窗口B

{

     public partial class Form2 : Form

     {

         public Form2()

         {

              InitializeComponent();

         }

         private void button1_Click(object sender, EventArgs e)

         {

              this.Owner.Text = "你更新了本窗体的标题!";       //更新Form1的标题

              // 更新Form1的文本框

              this.Owner.Controls["textBox1"].Text = "你更新了本文本框的内容!";

              this.Owner.Refresh();     //刷新Form1

         }

     }

}

 

//主窗体中定义静态成员 public static Form1 aa = null; //主窗体构造函数中给静态成员初始化 //子窗体中调用可以通过Form1.aa操作当前主窗体; aa = this; //或者在子窗体中定义一个私有成员 private Form1 bb = null; //在子窗体构造函数中加一个参数 public myclassfun(Form1 WinMain) { bb = WinMain; } //要调用的参数要修改权限public //或者封装 public System.Windows.Forms.TextBox TextBox2 { get { return textBox2; } set { textBox2 = value; } } //这样调用就可以了

你可能感兴趣的:(C#操作非本窗体的控件)