Visual Studio在运行程序后向DataGridView添加列

时间:2009-02-27 16:31:40

标签: c# winforms visual-studio-2008 datagridview

我有一个datagridview链接到数据库中的三列,它只显示它们(没有编辑)。当我在调试中运行程序并退出时,当我返回到Visual Studio中的表单时,它有我的三列,以及它链接到的表中的所有列。如果我不删除它们,下次运行程序时,它们会显示在表单上。如果我删除它们,我每次运行程序时都必须这样做。

有关如何解决此问题的任何想法?

3 个答案:

答案 0 :(得分:4)

AutoGenerateColumns是否设为True

如果要阻止DGV从数据源创建列(除手动创建的列之外),则应将其设置为False

编辑:为了澄清,如果在设计模式中属性未设置为False,则可能导致奇怪的行为。我正在考虑在运行时将其设置为False的极端情况。我还将查看设计器文件(您可能必须单击“显示所有文件”选项才能查看它)并查看它包含的与DGV相关的内容。那可能是个问题。

或者,您是否尝试删除控件本身并使用相同的绑定创建新的DGV?

答案 1 :(得分:4)

根据this,Visual Studio中存在一个错误,要求您在更改之前将绑定源设置为none / null(它似乎自2005年以来一直存在)。我删除了所有列,将绑定源设置为none,然后将绑定源重置为我想要的并编辑列。它现在正在运作。

答案 2 :(得分:3)

经过大量的挖掘,this solution终于为我解决了这个问题:

  

看起来编译器正在破坏.resx文件(哪个   包含表单的布局信息,包括列   设置),这意味着下次加载设计器时它会重新创建   数据源中的所有列。

     

修复程序如下所示:

     
    

执行“显示所​​有文件”,然后查看与之关联的.resx文件     形成并更改给您异常的列     行为...查找列名后跟“.UserAddedColumn”     输入,并将其设置为False。在我的情况下,我实际上走得太远了     完全删除说“[columnName] .UserAddedColumn”。

的条目