【发布时间】:2019-06-09 06:18:11
【问题描述】:
我的情况是我有Form 1和Form 2。在Form 1中我有button1和button2。我在 Form1 中将 bool dtgmb 定义为 false。但是,如果单击 button2,则 dtgmb 为真。
在表格 2 中,我有 1 个 DTG 和 button3,其中行的所有数据都已定义。因此,我运行实例,如果dtgmb 为假(单击按钮1),则显示object[] rows 的内容,如果dtgmb 为真(单击按钮2),则显示object[] rows1 的内容。然后点击button3返回Form1。
但是,如果我先单击button1,然后返回Form 1并单击button2,Form2将两次显示object[] rows的显示内容。然后如果我关闭应用程序并重新启动,这一次我先点击button2,然后返回Form 1并点击button1,Form2将显示object[] rows1的两次显示内容。
下面是我的代码:
表格 1
public bool dtgmb = false;
private void button1_Click(object sender, EventArgs e)
{
//Forms saved in class called FormsCollection
FormsCollection.Form1.Hide();
FormsCollection.Form2.Show();
}
private void button2_Click(object sender, EventArgs e)
{
FormsCollection.Form1.Hide();
dtgmb = true;
FormsCollection.Form2.Show();
}
表格 2
private void Form2_Load(object sender, EventArgs e)
{
stuff(FormsCollection.Form1);
}
public void stuff(Form1 form)
{
DataGridViewCheckBoxColumn check = new DataGridViewCheckBoxColumn();
DataGridViewCheckBoxColumn check1 = new DataGridViewCheckBoxColumn();
dataGridView4.ColumnCount = 1;
dataGridView4.Columns[0].Width = 380;
dataGridView4.Columns[0].Name = "Item";
string[] row1 = new string[] { "Tables" };
string[] row2 = new string[] { "Chairs" };
string[] row3 = new string[] { "Lamps" };
string[] row4 = new string[] { "Pillows" };
string[] row5 = new string[] { "Blankets" };
object[] rows = new object[] { row1, row2, row3, row4, row5 };
object[] rows1 = new object[] { row1, row2, row3, row4 };
if (form.dtgmb == false)
foreach (string[] rowArray in rows)
{
this.dataGridView4.Rows.Add(rowArray);
}
else
foreach (string[] rowArray in rows1)
{
this.dataGridView4.Rows.Add(rowArray);
}
check.HeaderText = "Pass";
check1.HeaderText = "Fail";
dataGridView4.Columns.Add(check);
dataGridView4.Columns.Add(check1);
}
【问题讨论】:
-
可能是因为忘记再次调用 stuff() 导致 Form2 没有刷新?
-
因为您没有在
button1_Click中将dtgmb设置为false? -
您正在使用
static变量。dtgmb的值取决于您设置的最后一个值。它只会在重新启动应用程序时重置为默认值false。 -
嗨 Antoine 和 Gserg,我尝试了你们的建议,但仍然没有改变。
-
嗨,约翰。如果我错了纠正我。嗯,我对使用静态的理解是因为这个布尔值总是调用按钮,按钮属性永远不会改变。因此,这就是我将其保留为静态的原因。如果我删除静态,则会发生对象引用错误,我不确定下一步该做什么。
标签: c# excel datagridview boolean-logic