0

ボタン グリッドを生成する小さなプログラムを作成しています。次に、作成した別のエクスポート クラスを使用して、このグリッドを MS Excel にエクスポートします。フォームが読み込まれるとグリッドが生成numericUpDownされます。グリッドに必要な行数を決定できます。Gen ボタンを押すと、グリッドは Excel に正常にエクスポートされます。ただし、グリッドのサイズを変更して行数を減らし、[Gen] ボタンをもう一度クリックすると、エクスポートされたデータが正しく更新されません。

ここに画像の説明を入力

これは、フォームの背後にあるコードです:

public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
        buttons = new Button[col][];
        states = new FormState[col][];
        for (Int32 c = 0; c < col; c++)
        {
            buttons[c] = new Button[col];
            states[c] = new FormState[col];
        }

    }

    private void loadMe()
    {
        panel1.Controls.Clear();
        placeRows();

    }
    private void Form1_Load(object sender, EventArgs e)
    {
        loadMe();

    }

     private void btnGen_Click(object sender, EventArgs e)
     {
         loadMe();

     }
}

ボタン配列をリセットする必要があるかもしれないことは知っていますが、それを機能させる方法がよくわかりません!

4

1 に答える 1

1

配列buttonsはアプリの起動時に一度だけ作成され、各生成はセル内のボタンをオーバーライドするだけで、古いボタンはそのまま残ります。buttonsそのため、Export クラスは、これまでに配列に追加したすべてのものを引き続き使用します。

コードを書き直さずに修正する最も簡単な方法は、buttons = new Button[col][];一部をForm1ctor からloadMeメソッドに移動することです。

于 2013-03-28T12:52:54.920 に答える