2014-03-31 97 views
0

一直在一個簡單的C#Windows應用程序。我已經能夠將一些變量從一種形式傳遞到下一種形式,並使用form2 y = new form2(passingVariable); y.ShowDialog();,然後在下一種形式public form2(string myVariable)上使用它們。但是這種方法只允許我在大括號內使用變量。目前我正試圖將它傳遞給下一個表格。但是,當我嘗試使用上面提供的代碼行將它傳遞到下一個表單時,它不會讓我使用該變量。它給了我錯誤名稱'userName'在當前上下文中不存在我有很多的源代碼,不知道什麼是我需要共享,所以這裏是我的webng.com帳戶link與如果任何人需要檢查它,我的源代碼將設置非常簡單的網頁。傳遞變量形式在c#中形成私人的全球?

+0

請使用pastebin或類似的代碼異地代碼。它以可讀的方式格式化代碼。另外請確保當您粘貼到pastebin中時,您的代碼已被正確描述。 – selkathguy

回答

0

嘗試在當前表單上創建另一個變量來存儲該用戶名,然後將傳遞給該變量的用戶名分配給該變量。您的構造函數將如下所示:

private string username; 

public talkingWithProgram(string userName, string pcName) 
{ 
InitializeComponent(); 
this.Text = pcName; 
programQuestion.Text = "Whatcha wanna talk about \n" + userName + "?"; 
this.userName = userName; 
} 

sportsCategories y = new sportsCategories(userName); 

創建一個新的sportsCategories類現在可以從此上下文中傳遞userName,該值具有上一個表單的值。目前,它看起來像是在方法上下文中超出範圍的構造函數中引用userName。

+0

非常感謝@Knightwisp :)這解決了我遇到的錯誤信息。只要我插入'私人字符串用戶名';和'this.userName = userName'然而,在將這些信息插入到我的程序中之後,會有一個新的錯誤消息,讀取''''''重載'sport_click'匹配委託'System.EventHandler' – SubZero

+0

您的代碼有一個sports_Click()方法。它是一樣的嗎?也許這是一個錯字。嘗試使用戶名受保護或甚至是公開的,以便它可用於命名空間中的其他類。另外,聲明「public string userName」在正確的地方;即「DialogResult結果」之後。讓它成爲「sportsCategories y = new sportsCategories(這個。username);「 – Knightwisp

+0

說實話,這段代碼有點難讀,但是嘗試了上面的代碼 – Knightwisp

0

我會避免在窗體的構造函數中設置特定的變量。通常情況下,使用getters and setters或專門爲此目的指定的功能更爲習慣。

例如:如果你可以有代碼form2 y = new form2(passingVariable);相反,你可以有代碼

form2 y = new form2(); 
form2.SetMyVar(passingVariable); 

,或者,如果您使用的getter和setter方法:

form2 y = new form2(); 
form2.SetMyVar = passingVariable 

這樣一來,只要你需要設置或更新變量,只要你有一個表單的引用就可以做到。另外,在所說的SetMyVar()函數中(如果你選擇那個方法),一定要設置一個類變量。 在您的代碼中,類變量超出了您的函數範圍,以便它們對該類實例的所有函數都可見。

0

在XYZ類初始化變量 指定值,將其在構造像

String a1,b1=String.empty 
    Class xyz 
{ 
    xyz(string a,string b) 
    {  //constructor 
    a1=a; 
    b1=b; 
    //Now use them in whole class 
    } 

} 

,或者如果你想在整個應用程序中使用它們,然後在Program.cs中 那麼你可以在全局初始化它們設置並獲取值如

Program.a1="abc" //assigning value 
+0

字符串a1和b1必須位於類定義內。另外他可能應該公開構造函數。 – ahmelsayed