VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1057|回复: 7

请教一关于WindowForm的简单问题

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-2 16:00:01 | 显示全部楼层 |阅读模式
现有AForm,BForm,CForm三个窗体,A,B都可以调出C窗体
如用:
CForm frm = new CForm();
frm.Owner = this;
frm.ShowDialog();

在C窗体中可以设置A,B中的变量,
如用:AForm frm = (AForm)this.Owner;
      frm.x=100;
或是: BForm frm = (BForm)this.Owner;
      frm.x=100;

在程序运行时,CForm窗体如何知道调用它的是AForm还是BForm,并返回值呢?
回复

使用道具 举报

0

主题

21

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-1-2 19:18:01 | 显示全部楼层
declare a property of type Form in CForm and assign a form to the property before calling CForm.ShowDialog
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-2 20:27:02 | 显示全部楼层
最簡單的方法﹕
if(Type.GetType("Test.AForm")==this.Owner.GetType())
{
    ((AForm)this.Owner).x=100;
}
else
{
    ((BForm)this.Owner).x=100;
}

注意﹕將"Test.AForm"中的Test改成你的AForm類的命名空間﹐一定不能省略
回复

使用道具 举报

0

主题

110

帖子

63.00

积分

新手上路

Rank: 1

积分
63.00
发表于 2020-1-3 10:03:01 | 显示全部楼层
同意楼上..

反射:

using System.Reflection;

            if (Type.GetType("TestForm.AForm").Equals ( this.Owner.GetType()))
            {
                //说明该C窗体的父窗体是A
                //操作
            }
            else
            {
                 //否则是B
                 //操作
            }
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-3 10:12:01 | 显示全部楼层
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-3 10:27:01 | 显示全部楼层
顶一把!
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-3 15:27:01 | 显示全部楼层
可以设置一个全局变量。A调用C的时候把变量赋值 A,B调用C的时候把变量赋值B

比如class FromA()
{
    public string strparent = ""

    private void 调用C()
    {
         strparent = "A";
         //u can call form c here;
     }
}

class FromB()
{

    private void 调用C()
    {
         FormA.strparent = "B";
         //u can call form c here;
     }
}

你读FormA.strparent的值就知道谁调用的了。
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-9-3 21:15:01 | 显示全部楼层
using   System.Reflection;

                        if   (Type.GetType( "TestForm.AForm ").Equals   (   this.Owner.GetType()))
                        {
                                //说明该C窗体的父窗体是A
                                //操作
                        }
                        else
                        {
                                  //否则是B   
                                  //操作
                        }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表