2012-02-23 71 views
0

我是C#的新手,我需要能夠訪問從Form1到Form2的聲明變量。變量示例:從Form1到From2的變量訪問

decimal Total = 0.00M; 用戶輸入項目時總數會增加。

我需要Form2從Form1訪問變量Total一旦用戶完成輸入項目,並且一旦用戶選擇支付方法我可以在Form2中爲零Total

我該怎麼做?

回答

4

如果Form1具有對Form2的引用,則可以將其作爲變量進行訪問。就像這樣:

public class Form1 
{ 
    public decimal Total {get; set;} 
} 

public class Form2 
{ 
    public Form2() 
    { 
    var form1 = new Form1(); 
    form1.Show(); 

    ..later, after use has done some work and you need the variable 
    var total = form1.Total; 
    } 
} 
+0

+1顯示此問題的另一個場景以及正確的解決方案。 – 2012-02-23 04:28:08

+0

@Steven P您的文章對我有一些幫助。在您的示例中,您是否創建了'public class Form1 {public decimal Total {get; set; }}'MSVS創建的程序中的任何地方? – ajaustin12 2012-02-23 04:29:59

+0

@Steven P什麼是技術術語或方法名稱,以便我可以做更多的研究? – ajaustin12 2012-02-23 04:40:26

1

在另一個類或其中一個類中創建一個靜態變量。一切都可以訪問靜態變量。你需要使變量通用/靜態。我就是這麼做的。

+0

我不知道該怎麼做。我已經多次讀過關於班級的內容,但仍然不明白。 – ajaustin12 2012-02-23 04:19:57

+0

你有Form1類。添加一個變量,如「public static int Total {get; set;}。在Form2中,發生了一些事情:Form1.Total ++。因此,Form1的Total字段發生了變化 – iefpw 2012-02-23 04:21:41

+0

感謝您的澄清。變量/類 – ajaustin12 2012-02-23 04:23:28

1

您可以通過Form1以您的窗體2(如果你需要更多的變量):

public class Form2 
{ 
    public Form1 form1 { get; set; }; 
} 

我想你應該從Form1中調用Form2的,所以你可以這樣做這樣的:

public class Form1 
{ 
    private void callForm2() 
    { 
     Form2 form2 = new Form2(); 
     form2.form1 = this; 
     form2.Show(); 
    } 
} 

我不建議使用靜態變量,因爲他們可以給你的情況下,有些問題你有超過1 Form1的在應用程序中打開。

+0

@ ajaustin12我想說你可以有兩個或更多的Form1,Form2或FormX實例,並且你應該控制實際顯示的表單實例(及其變量)用戶。 – 2012-02-23 04:34:49

+0

謝謝。我失去的唯一的東西是如何以及在哪裏創建類?現在已經很晚了,所以我現在很難跟上。 – ajaustin12 2012-02-23 04:37:10

+0

@ ajaustin12我將編輯我的帖子,提供有關Windows窗體操作的更多信息。順便說一下,請告訴我你的Visual Studio版本和。你正在使用的網絡框架,所以我可以發佈更好的答案。 – 2012-02-23 04:40:54

0

像這樣的這種情況的最佳方式是創建第三個類,它代表以這兩種形式處理的操作的上下文。您可以保留您需要在該課程中共享的所有狀態,並將其作爲參數從形式傳遞給表單。或者應用Singleton模式,這將允許從您擁有的所有表單訪問狀態。