将ContextMenuStrips添加到多个TabPages上的多个DataGridViews

时间:2018-07-11 16:45:32

标签: c# loops dictionary datagridview contextmenustrip

我试图在TabControl的单独选项卡页中将多个DataTables加载到DataGridViews中,DataTables存储在Dictionary中,而Dictionary又存储在DataObject类中。

我可以正确显示所有内容,但是当我尝试通过Datagridview标头添加循环以添加contextmenustrip时,由于某种原因,我可以使它适用于第一个DataGridView,但是后续的DataGridViews没有应用上下文菜单吗?我试过在foreach循环之前添加打印声明,并且DataGridView的列计数为零…所以我想这就是为什么foreach循环不执行任何操作的原因……但是所有数据仍然正确地显示在各自的dataGridViews中标签…在指出我所缺少的内容方面的任何帮助将不胜感激。

问候 阿马里诺(Amarino)

下面提供的代码

(read (open-input-string "(+ (- 5 2))"))

1 个答案:

答案 0 :(得分:0)

我确信这是因为未显示“标签页”。由于跟踪是在LoadDatatableIntoGrid方法中描述的...如果在该行上放置断点...

tabControl_ImportFiles.TabPages[pTabName].Controls.Add(lDGV);

将监视添加到变量lDGV.Columns.Count…将显示IDGV具有零(0)列。执行上面的一行,神奇的是,网格IDGV具有列。这似乎是正确的,因为这是第一个“标签页”,并且它是活动的(显示的)标签页。要点...如果不将网格添加到“活动/显示/显示”选项卡页面,则大多数UI代码将被忽略。这就是为什么下一次到来;该网格将为空,因为该网格已添加到非“活动/显示/显示”标签页中。

一个简单的解决方案是在向其添加网格之前简单地“显示”选项卡页面。这似乎可以解决您描述的问题。在下面的行之前添加下面的行...

tabControl_ImportFiles.TabPages[pTabName].Show();

希望这会有所帮助。