在我的主表单上,我有以下方法:
private void updateSet()
{
dsManager.fillPeriodSet();
dataGridView1.DataSource = null;
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = dsManager.mainSet;
dataGridView1.DataMember = "nice_table";
}
在表单初始化时从构造函数调用此方法,并在使用其他"句点"更新数据集之后再次调用此方法。它首次在表单加载时,改变数据集的功能也可以正常工作,我可以确认通过检查器窗口成功添加了新值。
第二次调用时,即使数据集已正确更新,也不会发生任何事情。如果我关闭表单并重新运行,它将再次正确显示,包括新添加的"期间"。
我知道在这个和其他论坛上有很多其他类似的问题,我已经尝试了至少10个。似乎没有其他人在这里工作。
过去有没有人有过这个问题的经验?
答案 0 :(得分:0)
当应用程序处于活动状态且具有多个表单时,活动表单是具有输入焦点的表单。不可见的表单不能是活动表单。激活可见表单的最简单方法是单击它或使用适当的键盘组合。
在c #windowsApplication中,你有一个名为Form_Activate的事件
你可以处理这个事件并在发生此事件时运行你的代码。
private void Form1_Activated(object sender, System.EventArgs e)
{
//your code :)
}
答案 1 :(得分:0)
因此,在大约一周左右的时间里玩弄我的代码的每一个可能的变化后,当我做出以下更改时,我终于完成了所有工作:
dataGridView1.DataSource = itemSet1;
dataGridView1.DataMember = "items_formatted";
到
dataGridView1.DataSource = itemSet1.Tables["items_formatted"];
//dataGridView1.DataMember = "items_formatted";
显然,DataMember
属性导致DataGridView无法刷新。即使我明确地清除它(dataGridView1.DataMember = null;
)并且它在Locals窗口中显示为已清除,它仍然具有某种残留效果,使得无法重新加载数据集。
非常令人沮丧,如果有人知道为什么这是我想知道的。否则,我希望这个问题/答案至少能帮助处于同一位置的其他人。
更新:
有关其他参考,我的原始问题中的代码已从以下位置更新:
dataGridView1.DataSource = dsManager.mainSet;
dataGridView1.DataMember = "nice_table";
为:
dataGridView1.DataSource = dsManager.mainSet.Tables["nice_table"];
现在也可以。我的任何表格都不需要额外的清除/更新/重组代码。