如何在一个窗体中调用另外两个窗体中的实例?

编程语言编程语言:C#环境:windows窗体应用程序程序要求:1.做3个窗体,分别命名为Form1,Form2,Form3;2.在Form1中放一个button,命名为... 编程语言
编程语言:C#
环境:windows 窗体应用程序
程序要求:
1.做3个窗体,分别命名为 Form1,Form2,Form3;
2.在Form1中放一个button,命名为button1.放一个CheckBox,命名为CheckBox1.
3.在Form2中放一个button,命名为button2.放一个CheckBox,命名为CheckBox2.
4.在Form3中放一个button,命名为button3.
5.点击button1,要求弹出Form2.
6.点击button2,要求弹出Form3.
7.点击button3,要求获取CheckBox2.Checked属性,然后将CheckBox1.Checked属性设置为CheckBox2.Checked。
问题:该如何写button3的代码,相对应button1和button2中该如何写。
说明:本例不具有实际意义,但是我做的程序中有这样的要求,我现在将问题简化下来。我不懂的地方是,如何在Form3中同时调用Form1和Form2中已经实例化的类?或变量?谢谢,麻烦帮忙给解决一下。纠结好多天了。目的在于调用实例,不在于值传送。
因为我要调用的控件不仅仅是一个CheckBox,还包括控件,变量,和其他类实例。
所以以下两位的回答,虽然能解决上面的问题,但是也都没有完全解决我的问题。

我从网上找了一个方法。

就是将Form1和Form2作为参数传进Form3中。谢谢两位。

下面贴一下代码,此为解决方案,不是问题了。
Form1:

Form2:

}
Form3:

分只能给一个。对另一位说抱歉。
展开
 我来答
freeeeeewind
推荐于2016-04-18 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1330万
展开全部

挺有意思的实验!!;-)


1)在Form1中

public partial class Form1 : Form
{
    //添加一个静态实例变量
    public static Form1 Instance = null;
    
    public Form1()
    {
        InitializeComponent();
        instance = this;    
    }
   //公开checkBox1的Checked属性
    public bool Checked
    {
        get{ return checkBox1.Checked;}
        set { checkBox1.Checked = value;}
    }
    //关闭窗口时,销毁静态实例变量
    protected override void OnFormClosed(FormClosedEventArgs e)
    {
            base.OnFormClosed(e);
            Instance = null;
    }
    //……其余代码略
}

2)在Form2中

public partial class Form2 : Form
{
    //添加一个静态实例变量
    public static Form2 Instance = null;
    
    public Form2()
    {
        InitializeComponent();
        instance = this;    
    }
   //公开checkBox2的Checked属性
    public bool Checked
    {
        get{ return checkBox2.Checked;}
        set { checkBox2.Checked = value;}
    }
    //关闭窗口时,销毁静态实例变量
    protected override void OnFormClosed(FormClosedEventArgs e)
    {
            base.OnFormClosed(e);
            Instance = null;
    }    
    //……其余代码略
}

3)在Form3中

public partial class Form3 : Form
{
    private void button3_Click(object sender, EventArgs e)
    {
        //设置Form1上checkBox1
        Form1.Instance.Checked = true;
        
        //获取Form2上checkBox2的属性
        bool b = Form2.Insance.Checked;
    }
    //……其余代码略
 }
然后去远足
2014-09-07 · TA获得超过1万个赞
知道大有可为答主
回答量:4016
采纳率:83%
帮助的人:2404万
展开全部
定义一个公有的静态变量,把你的实例化对象赋值给它,然后对这个公有的静态变量操作就等同于操作那个对象了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式