我正在创建一个生成按钮网格的小程序。然后,我使用我创建的单独导出类将此网格导出到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();
}
}
我知道我可能需要重置按钮阵列,但不太确定如何使它工作!
答案 0 :(得分:1)
您的buttons
数组在应用启动期间只创建一次,每个Generate只覆盖单元格中的按钮,保持旧按钮不变;因此,导出类仍然使用到目前为止已添加到buttons
数组的所有内容。
在不重写代码的情况下解决问题的最简单方法是将buttons = new Button[col][];
部分从Form1
ctor移至loadMe
方法。