c# winform 一个窗体怎么修改另一个窗体的属性

现在我在form1中打开form2 然后再form2中按下按钮修改form1中textbox中的text,怎么弄,我已经把textbox的private 改为public了 然后form1 myform=new form1(); myform.textbox.text="";不行,该怎么弄

在Form1的类中添加一个方法更新textBox1

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
         
        //添加一个方法,用于更新textBox1
        public void UpdateTextBox(string newData)
        {
            this.textBox1.Text = newData
        }
         
        //点击按钮,显示Form2窗口
        private void buttonShowForm2_Click(object sender, EventArgs e)
        {
            //用新的构造函数(见下面的Form2类),创建Form2实例
             Form2 form2 = new Form2(this);
             form2.Show();
        }
         
        //其余代码略……
    }

在Form2中,添加一个新的构造函数

 public partial class Form2 : Form
    {
        private Form1  _form1;
 
        public Form2()
        {
            InitializeComponent();
        }
         
        //添加一个构造函数
        public Form2(Form1 form): this()
        {  
            _form1 = form;
        }
          
          //当鼠标点击了button1       
          private void button1_Click(object sender, EventArgs e)
          {
              //将数据传回Form1并更新显示
               _from1.UpdateTextBox(string newData);
          }
        
         
        //其余代码略……
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-05
form1中定义一个public string pubValue="";同时将form1的TextBox_TextChanged设置为public,并且textbox.text=pubValue。
在打开form2前,将form2.Parentform=this;

form2中点击按钮修改pubValue的值,然后触发this.parentform.TextBox_TextChanged(sender,e);就可以了。
第2个回答  2014-03-05
等等我试试。我知道怎么做,但是我不敢确定,用静态变量好像可以实现,你的New的问题
你想,你都New了一个form1 就是一个新的窗体了。所以不行
第3个回答  推荐于2017-11-29
在form1中写一个方法用来修改textBox的Text
比如
void ChangeText(string s)
{
textBox.text=s;

}
然后再form2中写一个委托,
public delegate void mydelegate(string ss);

public mydelegate change;
在form1中显示form2的时候写
form2 f=new form2();
f.change=new form2.mydelegate(ChangeText);//将方法绑定到form2中
然后再form2的修改按钮里写:
change(t); //t为要修改的内容本回答被提问者和网友采纳
第4个回答  2014-03-05
最简单的就是用委托 就可以实现了
相似回答