C# Windows编程 窗体编程 如何在一个窗体中对另一个窗体进行操作??

2025-03-21 16:20:47
推荐回答(3个)
回答1:

1)修改RichtTextBox属性,将Modifiers改为Public


2)在窗体2的后台代码中增加一个新的构造函数:

   

public partial class Form2 : Form
    {
        //保存对Form1实例的引用
        Form1 form1;
        
        //原来的构造函数
        public Form2()
        {
            InitializeComponent();
        }
        //新构造函数
        public Form2(Form1 form1)
            : this()
        {
            this.form1 = form1;
        }
   }

3)在Form1中,点击button1显示Form2

 private void button1_Click(object sender, EventArgs e)
        {
                    Form2 f2 = new Form2(this);
                    f2.Show();        
      }

4)在Form2中,点击button1修改Form1.RichTextBox内容

private void button1_Click(object sender, EventArgs e)
        {
            //至此,可以在Form2操作Form1中的RichTextBox控件了。以下是示例            
            form1.richTextBox1.SelectAll();            
            form1.richTextBox1.SelectedText = "aaaaaaaaaaaaa";        
        }

回答2:

楼主采纳一楼吧,他比我快了一步。。郁闷了。。。
我和你讲讲为什么你不行吧。
因为,你窗体2的按钮里面直接写:
chuangti1 f1=new changti1();
那么,等于是定义了一个新的chuangti1类,并非你当前chuangti1的那个窗体了!
也就是,当前显示的窗体1,和你new出来的chuangti1不是同一个东西。
所以,根本就没效果了。
所以,你要把form1传进form2的构造

回答3:

chuangti1 f1=new changti1();

这句话又新实例化了一个chuangti1,和之前的那个没有关系的
可以这么处理:
重载chuangti2的构造函数,把你要修改窗体1中的控件当作参数传递进去
例如,chuangti2 f2=new changti2(...);
这样一来,在新出现的窗体2中就可以操作窗体1中的内容了
具体想怎么操作,根据需求修改构造函数即可

另外,不提倡修改控件的访问权限,违反面向对象的封装性,最好不要把private修改成public,
很不好