正在开发一个简单的c#windows app程序。我已经能够将一些变量从一个表单传递到下一个表单并使用form2 y = new form2(passingVariable); y.ShowDialog();
然后在下一个表单public form2(string myVariable)
上使用它们。但是这个方法只允许我在那些花括号中使用变量。目前我正试图将它传递给下一个表格。但是当我尝试使用上面提供的代码行将其传递到下一个表单时,它不会让我使用该变量。它给了我错误当前上下文中不存在名称'userName'我有很多源代码,并且不知道我需要分享到底是什么,所以这里是我的webng的link。如果有人需要查看,我的源代码设置了一个非常简单的网页的com帐户。
答案 0 :(得分:0)
我会避免在Windows窗体的构造函数中设置特定变量。一般来说,使用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()
函数中(如果选择该方法),请务必设置类变量。 在您的代码中,类变量超出了您的函数范围,因此它们对该类实例的所有函数都是可见的。
答案 1 :(得分: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
答案 2 :(得分: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,它位于方法上下文中,超出了范围。