C# 从解决方案中的另一个文件访问windows窗体中的数组
我在VS中制作了一个windows窗体应用程序.sln。它有一个Program.cs和Form1.cs。它建立。Form1.cs中有一个按钮C# 从解决方案中的另一个文件访问windows窗体中的数组,c#,arrays,winforms,button,namespaces,C#,Arrays,Winforms,Button,Namespaces,我在VS中制作了一个windows窗体应用程序.sln。它有一个Program.cs和Form1.cs。它建立。Form1.cs中有一个按钮 private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Hello");} 我在Program.cs中有一个数组 static void Main() { string[] john = {"tom", "susan"}; } 我希望我的按钮访问此阵列,以便它可
private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Hello");}
我在Program.cs中有一个数组
static void Main() {
string[] john = {"tom", "susan"};
}
我希望我的按钮访问此阵列,以便它可以
MessageBox.Show(john[0]);
我不理解所有的名称空间和完全限定类等等。我只是无法将我的数组粘贴到Form1.cs中的任何位置而不出错,它必须返回Main。感谢您的帮助。如果您在form类中添加变量john的声明,它应该可以工作
namespace WindowsFormsApplication7 {
public partial class Form1 : Form {
string[] john = { "tom", "susan" };
public Form1() {
InitializeComponent();
}
// Rest of your code...
您的数组在Form1类中超出范围。要在程序中对其进行纠正并将其公开,请执行以下操作:
public static string[] john = {"tom", "susan"};
然后通过以下方式访问:
MessageBox.Show(Program.john[0]);
变量的范围仅限于main方法,请执行以下操作
static class Program
{
public static string[] john = { "tom", "susan" };
[STAThread]
static void Main()
{
然后
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(Program.john[0]);
}
可以使用公共数组声明,但在这种情况下需要创建类的实例 应该将数组放入
Form1
类中,以便表单控件使用它。根据经验,不要将属性放在Program.cs
中,因为它们会“太过全局”,或者换句话说,将变量的范围限制在绝对最小值,以获得更清晰的代码
public class Form1
{
string[] john = {"tom", "susan"};
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(this.john[0]);
}
}
有关更多信息,MSDN可以提供帮助:此外,您可能希望了解有关最佳做法的信息。使您的阵列
成为公共静态阵列
public static string[] john = {"tom", "susan"};
MessageBox.Show(Program.john[0]);
但是,这不是一个好的做法:Form1
不应该引用Program
的成员,因为它引入了循环依赖(Program
->Forms1
->Program
)并破坏了封装
更好的解决方案是将此列表存储在Form1
的公共属性中。我想消除我的错误-“名称“john”在当前上下文中不存在。”这不会编译。你必须创建program的对象才能访问它的非静态成员。好的,根据我的经验,我最了解这个。我不得不将数组移出Main并添加您的更改<代码>命名空间WindowsFormsApplication1{静态类程序{公共静态字符串[]john={“tom”,“susan”};[StatThread]静态void Main(){}