2

私は問題を抱えています。理由はわかりませんが、それが実際に何であるかはわかりません。

私がやりたいのは、基本的にゲームのボードとしてチェックボックスの 10 x 10 フィールドを作成することだけです。

私が思いついたのは、これらのボックスの配列を使用して、フィールド内の座標に従ってボックス [0,0] からボックス [9,9] までを簡単に識別できるようにすることです。

これは私が苦労しているコードです:

        private void Form1_Load(object sender, EventArgs e)
    {
        // == OPTIONS ========================================
        int xpos = 60;  // Position of the first Checkbox (x)
        int ypos = 60;  // Position of the first Checkbox (y)

        int size = 10;  // Number of Rows and Columns

        int spc = 30;   // Space between boxes (Default:20)
        // ====================================================

        //other Variables
        int x, y;


        //Creating the Game Field
        CheckBox[,] box = new CheckBox[size,size];


        for (int i = 0; i < size; i++)
        {

            for (int j = 0; j < size; j++)
            {

                box[i, j] = new CheckBox();

                //For Debugging Purpuses: Showing i and j next to checkBox
                box[i, j].Text = i + "" + j;

                //Set Position
                y = i * spc + xpos;
                x = j * spc + ypos;
                box[i, j].Location = new Point(x,y);

                this.Controls.Add(box[i, j]);
            }
        }

    }

ここから得られるのは、[0,0] から [0,9] までのマークが付いたチェックボックスの 1 つの列だけです。

そして、x と y または i と j を入れ替えても、それは決して変わりません。したがって、iE i はチェックボックスの行を取得することはなく、常に単一の列を取得します。これのどこが間違っているのですか?

私はそれらの10個のチェックボックスを取得するだけで、それ以上のものはありません。それらは互いに重ねられているようにも見えません。

ここで私を助けてくれることを願っています:)ありがとう。ティモ。

4

1 に答える 1

1

デフォルトでは、チェックボックスが広すぎます。

試してみてください(例):

int spc = 50;

また、これをループに追加します。

box[i, j].Width = 40;
于 2013-10-22T12:01:02.353 に答える