0
CheckBox[] checkBoxArray = new CheckBox[lines.Count()];
CheckBox checkBox = new CheckBox();

int yLocation = 25;
int diff = 0;
int i = 0;
foreach(var line in lines)
{
    this.checkBox.Text = line;
    this.checkBox.Location = new System.Drawing.Point(90, yLocation + diff);
    this.checkBox.Size = new System.Drawing.Size(110, 30);
    checkBoxArray[i] = checkBox;
    i++;
    diff = diff + 30;
}

私は自分のアプリをデバッグしましたが、 checkBoxArray(ループの後)すべて同じです。

2 番目の問題は、コントロールを WinForm に追加する方法です。

4

3 に答える 3

3

ローカル スコープのメンバーではなく、checkBox というクラス レベルのメンバーを実際に使用しているようです。

CheckBox[] checkBoxArray = new CheckBox[lines.Count()];

int yLocation = 25;
int diff = 0;
int i = 0;
foreach(var line in lines)
{
    CheckBox checkBox = new CheckBox();
    checkBox.Text = line;
    checkBox.Location = new System.Drawing.Point(90, yLocation + diff);
    checkBox.Size = new System.Drawing.Size(110, 30);
    checkBoxArray[i] = checkBox;
    i++;
    diff = diff + 30;
    Controls.Add(checkBox);  // Add checkbox to form
}

の目的が何なのかはわかりませんcheckBoxArrayが、物事を機能させるためだけの試みである場合は、安全に取り除くことができます。

于 2014-04-04T16:42:19.553 に答える
2

ループ内で新しいインスタンスを作成しないCheckBoxと、同じ値を何度も上書きするだけですCheckBox

foreach (var line in lines)
{
    // Create a new CheckBox
    var checkBox = new CheckBox();

    // Set its properties
    checkBox.Text = line;
    ...

    // Add it to the form's collection of controls
    this.Controls.Add(checkBox);

    // Adjust checkBox.Location depending on where you want it
    checkBox.Location = new Point(0, 0);
}
于 2014-04-04T16:41:56.787 に答える
1

多分これはあなたを少し助けます: http://support.microsoft.com/kb/319266

this.Controls.Add(checkBox);
于 2014-04-04T16:42:20.260 に答える