在c#中传递变量形式以形成私有到全局?

时间:2014-03-31 12:29:00

标签: c# forms variables global private

正在开发一个简单的c#windows app程序。我已经能够将一些变量从一个表单传递到下一个表单并使用form2 y = new form2(passingVariable); y.ShowDialog();然后在下一个表单public form2(string myVariable)上使用它们。但是这个方法只允许我在那些花括号中使用变量。目前我正试图将它传递给下一个表格。但是当我尝试使用上面提供的代码行将其传递到下一个表单时,它不会让我使用该变量。它给了我错误当前上下文中不存在名称'userName'我有很多源代码,并且不知道我需要分享到底是什么,所以这里是我的webng的link。如果有人需要查看,我的源代码设置了一个非常简单的网页的com帐户。

3 个答案:

答案 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,它位于方法上下文中,超出了范围。