-1

こんにちは、ビジュアル スタジオで ac# アプリケーションを作成しようとしています。フォームのクリック イベント内でアクセスしようとしているメインの配列を作成しましたが、現在のコンテキストに配列の「文字」が存在しないことを示しています。配列をフォームに渡そうとしましたが、まだ同じ問題があります。ここに私のコードがあります。

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 関数内で定義され、そのスコープでのみ表示されます。

あなたができる最も簡単なことは、メインの外に配列を移動することです:

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();
    }

    ...
    ...
}

Form Main、次のように呼び出します。

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