如何知道哪个表单在C#中称为另一个表单#

时间:2017-03-03 04:56:04

标签: c#

我提供了多个表格,并提供了购买按钮。我所拥有的表格是LawnA.cs和Lawnb.cs,我想对这两种形式使用单一的Buy.cs表格。我的意思是我想知道什么称为Buy.cs。

表格LawnA.cs

    buy.lotAtobuy = this;
    buy.ShowDialog();

表格LawnB.cs

    buy.lotBtobuy = this;
    buy.ShowDialog();

表格Buy.cs

    public LawnA lotAtobuy;
    public LawnB lotBtobuy;
    ((LawnA)lotAtobuy).textBox1.Text;
    ((LawnB)lotBtobuy).textBox1.Text;

在类Buy.cs中,我想执行:

    ((LawnA)lotAtobuy).textBox1.Text;

如果LawnA.cs调用Buy.cs而LawnB.cs调用Buy.cs我想执行此代码:

    ((LawnB)lotBtobuy).textBox1.Text;

2 个答案:

答案 0 :(得分:1)

您需要为每个类定义单独的对象,而不是将变量定义为对象,并在分配文本之前检查对象的类型。这意味着Buy.cs中该变量的声明将是:

public object lotToBuyInstance;

这样你就可以获得对象的类型并在使用前进行比较,就像thi:

if (lotToBuyInstance.GetType() == typeof(LawnA))
{ 
    ((LawnA)lotAtobuy).textBox1.Text;    
}
else if (lotToBuyInstance.GetType() == typeof(LawnB))
{ 
    ((LawnB)lotAtobuy).textBox1.Text;    
}
// and so on

考虑一下你想要创建另一个类(让它成为LawnC)然后你不需要创建那个类型的对象并按照它进行更改,只需在{{1}中添加另一个条件}梯子让他们工作

答案 1 :(得分:0)

在接收表单的构造函数中尝试:

using System.Diagnostics;    

public FormThatWasCalled
{
    string caller = new StackTrace().GetFrame(1).GetMethod().DeclaringType.Name;
    InitializeComponent();
}