我有一个datagridview链接到数据库中的三列,它只显示它们(没有编辑)。当我在调试中运行程序并退出时,当我返回到Visual Studio中的表单时,它有我的三列,以及它链接到的表中的所有列。如果我不删除它们,下次运行程序时,它们会显示在表单上。如果我删除它们,我每次运行程序时都必须这样做。
有关如何解决此问题的任何想法?
答案 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”。
的条目