-1

嗨,我正在尝试在 Visual Studio 上编写 ac# 应用程序。我在 main 中创建了一个数组,我试图在表单上的单击事件中访问它,但它告诉我当前上下文中不存在数组“字符”。我尝试将数组传递给表单,但我仍然遇到同样的问题。任何帮助将不胜感激这是我的代码。

namespace WindowsFormsApplication10
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            bool[][] characters = new bool[27][];            // my array characters

            characters[1][0] = true; 

            Application.Run(new Form1());            
        }
    }
}

namespace WindowsFormsApplication10
{
    public partial class Form1 : Form
    {
        int cs1 = 0,cs2=0;    

        public Form1()
        {
            InitializeComponent(); 
        }

        public void pictureBox1_Click(object sender, EventArgs e)
        {
            if (characters[1][0] == true)     // trying to access member of characters 
            {                                 // array but characters does not
                                              // exist in the current context
                pictureBox28.Visible = false;
            }
        }
    }
}
4

3 回答 3

1

您的数组在 Main 函数中定义,仅在其范围内可见。

您可以做的最简单的事情是将数组移到 Main 之外:

public static bool[][] characters = new bool[27][]; 
static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            characters[1][0] = true; 

            Application.Run(new Form1());            


        }

public void pictureBox1_Click(object sender, EventArgs e)
        {

            if (Main.characters[1][0] == true)     // trying to access member of characters 
            {                                 // array but characters does not
                                              // exist in the current context
                pictureBox28.Visible = false;
            }            

        }
于 2012-12-14T05:12:52.773 回答
0
  1. 将您的数组存储为静态文件 inobject,然后您可以在任何地方访问它。
  2. 作为参数传递。
  3. RPC
于 2012-12-14T05:10:25.383 回答
0
bool[][] characters = new bool[27][];

被声明为Main方法的本地。因此它在它之外是不可见的。

如果要在内部使用Form1,请更改为以下内容:

public partial class Form1 : Form
{
    bool[][] characters = null;
    int cs1 = 0,cs2=0;

    public Form1(bool[][] characters)
    {
        this.characters = characters;
        InitializeComponent();
    }

    ...
    ...
}

表格Main,调用如下:

Application.Run(new Form1(characters));            
于 2012-12-14T05:15:18.660 回答