C# 两窗体间控件调用

第一种方法:

假设有两个窗体:Form1、Form2。  其中Form1 里面有控件 Label1;;   Form2里面有 button1;

目标:通过点击Form2的button1来改变Form1里的Label1的Text属性。
方法:
step1:
       在Form1窗体类中定义一个静态成员,来保存当前主窗体对象:
       public static Form1 ForForm2 = null;
step2:
       在Form1的构造函数里面初始化静态成员:
       ForForm2 = this;
step3:
       把Label1的可见级别从private调整为public(在属性栏里的Modifiers)
开始使用:
       在Form2里的button1_Click事件里面直接调用Form1的Label1控件:

       Form1.ForForm2.Label1.Text = "调用成功";

第二种方法:

     在Form1的按钮点击显示Form2的Click函数中

    Form2 f2 = new Form2();
            f2.Owner = this;
            f2.Show(); 

     在Form2的响应要操作Form1中的控件的函数中

           Form1 f1 = (Form1)this.Owner;
            f1.label1.Text = "调用成功";
 

     注意:Form1中被操作的控件的属性应设置为Public。    

第三种方法:

     要把Form1中被操作的控件的属性应设置为Public,

     修改Form2的构造函数

         public Form2(Form1 parent)
         {
            InitializeComponent();
            paf = parent;
         }

      其中声明:private Form1 paf;

     在Form1中点击Button1显示Form2

           Form2 f2 = new Form2(this);
            f2.Show();

    最后在Form2的Button Click函数

          private void button1_Click(object sender, EventArgs e)
        {
            paf.label1.Text = "调用成功";
        }

以上三种方法都是将控件的访问属性修改为public(默认为private),这在OPP中是不提倡的。如果要操作窗体控件可以写一个公共的方法在方法中修改控件。

第四种方法:

        如要操作Form1中的Label控件,可以再Form1扥类中定义相应的方法

public void SetText(string text,bool status)
        {
            label1.Text = text;
            button1.Enabled = status;
        }

        在Form2中先声明一个Form字段用以引用Form1;

         Form form1;

         同时还要修改Form2的构造函数

         public Form2(Form form1)
        {
            InitializeComponent();
            this.form1 = form1;
        }

       最后在处理函数中调用SetText方法

private void button1_Click(object sender, EventArgs e)
        {
            (form1 as Form1).SetText("调用成功", true);
        }

         其中(form1 as Form1)是将form1转换为Form1类型的对象。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值