2017-03-03 89 views
1

我有多種形式的「購買」按鈕提供。我所擁有的表單是LawnA.cs和Lawnb.cs,我想爲這兩種表單使用單個Buy.cs表單。我的意思是我想知道什麼形式叫做Buy.cs。如何知道哪種形式在C中稱爲另一種形式?

形式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; 
+0

我得到了textBox1的值,並且該值是我在Buy.c中的所有查詢中使用的值。並且我得到錯誤對象引用不發送 –

回答

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),那麼你不必創建該類型的對象,並進行更改爲每說,只要添加另一個條件在if else if梯子,使他們的工作

+0

謝謝。它的工作 –

+0

很高興聽到這句話,高興地幫助你。 –

0

試試這個我n接收表單的構造函數:

using System.Diagnostics;  

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