2014-03-31 60 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