防止DataGridView列在设计器中消失

时间:2014-02-12 00:32:12

标签: c# datagridview datasource designer

我继续让我的一些DataGridViews的列在设计器中随机消失,当然,当我运行应用程序时也没有显示任何内容。目前我甚至无法将数据源设置为None,然后返回到我的绑定源(过去一直都有效),所以我想我需要创建一个新的DataGridView并将数据源重新绑定到它。问题是我添加了几个监听器,设置了列宽等等。我无法跟踪我对每个表所做的一切(我不应该这样做!)。而且我厌倦了一遍又一遍地重做同样的事情。

我做了一点搜索,发现其他人有这个问题,这可能是Visual Studio中的一个错误(我使用的是Visual Studio Express 2013)。所以我的问题是:我做了什么导致这种情况,我可以阻止它再次发生吗?

修改 我已确定原因,但仍未确定解决方案。当我更改DataTable后面的DataGridView时会发生这种情况,例如,在DataTable中添加或删除列,然后在DataGridView中添加或删除该列。一旦我这样做,所有列都会从Designer中消失,包括任何监听器代码等。我补充说。我会真的欣赏一些帮助,因为它一直发生在我身上,因为我正在开发一个需求不断变化的项目,并且不可能让DataTable成为静态的点。并且很难记住列宽,听众/工具提示/等等。我添加了哪些列等等。这完全看起来像是设计器中的一个错误。

7 个答案:

答案 0 :(得分:1)

我最近遇到了绑定到DataSource的Datagridview的类似问题。当我尝试向Datagridview添加新列时,在列编辑器窗口中按下OK按钮时,所有列都将消失。

<强>原因: 在我的情况下,我发现我试图添加的新列被命名为&#39; override&#39;在数据库中,这是C#中的保留字。设计师试图使用现有名称添加列,这当然搞砸了。

<强>解决方案: 只需在保存对Datagridview的更改之前,在列编辑器窗口中更改列的 Name 属性。无需更改数据库或其他任何地方的任何内容。

答案 1 :(得分:0)

我也遇到过类似的问题。在designer.cs文件中进行更改。 您将在designer.cs文件中找到所有列。您仍然可以使用添加列添加新列。

答案 2 :(得分:0)

我的项目遇到了这个问题。

问题描述:我在我的DataGrid中添加了一个新的数据绑定列。在“编辑列”窗口中按“确定”后,所有列都消失了。

解决方案:遗憾的是,您将丢失DataGrid列配置。保存项目并重新加载。列将再次出现(如果没有,请再次设置DataSource。)

副作用:此错误的最糟糕部分是以前与您的DataGrid关联的所有组件仍将存在于项目中,并且我无法使用设计器或解决方案删除它们资源管理器。

项目清理:我必须按照以下步骤清理项目:

  • 转到解决方案资源管理器中的DataGridColumn。它将在您的项目中显示在.Designer.cs文件中。
  • 删除或评论文件的行。
  • 错误将出现在错误列表中。
  • 删除或注释错误中报告的行(位于InitializeComponent()方法上)。

警告:我做了推荐的更改,并且对我的项目没有任何问题。但是,在进行手动更正之前,请始终备份项目,如我所描述的那样。

祝你好运,编码愉快。

答案 3 :(得分:0)

Adding from Add Column not from edit columns will solve the problem

可能是它的一个错误。但是我可以添加添加列选项中的列,如图所示,而不是编辑列选项。

答案 4 :(得分:0)

我正在使用VS 2013并面临同样的问题。我打开设计表单,编辑datagridview的列,然后按OK,但之后我的datagridview中的所有列都消失了。

我通过重命名以_(下划线)开头的所有列来解决这个问题,然后按OK,一切正常。也许这是一个VS错误,或者我的列名包含一个保留字。

take a look at my screenshot

答案 5 :(得分:0)

我的名字以?结尾的列也有同样的问题。使用不带?的别名解决了问题。顺便说一句,如果在列消失之后,您在IDE中再次关闭并打开了表单,您会发现列仍然存在,但是所有费力地应用的格式化都消失了。感谢Heavens的源代码控制。

答案 6 :(得分:0)

我在VS 2015中遇到了同样的问题,我的列从dataGridView中消失了。在我的情况下,原因是我有一列与Form1中的字符串变量同名的列。对我来说,解决方案是重命名字符串变量及其所有引用。之后,我可以编辑“列”属性,而不会消失任何列。希望这对仍然面临此问题的人有所帮助。