【问题标题】:Prevent columns of DataGridView from disappearing in the designer防止 DataGridView 的列在设计器中消失
【发布时间】:2014-03-10 02:06:16
【问题描述】:

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

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

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

【问题讨论】:

  • 我用更具体的信息编辑了帖子,这些信息可能有助于确定问题,更重要的是,解决方案。

标签: c# datagridview datasource designer


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    对于名称以 ? 结尾的列,我遇到了同样的问题。使用没有 ? 的别名解决了这个问题。顺便说一句,如果在列消失后,您在 IDE 中关闭并再次打开表单,您会发现列仍然存在,但您费力应用的所有格式都消失了。感谢上帝提供源代码控制。

    【讨论】:

      【解决方案3】:

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

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

      take a look at my screenshot

      【讨论】:

        【解决方案4】:

        可能是它的一个错误。但它对我来说是从 Add Column 选项添加列,如图所示,而不是从 Edit Columns 选项。

        【讨论】:

          【解决方案5】:

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

          问题描述:我正在向我的 DataGrid 添加一个新的数据绑定列。在 Edit Columns 窗口中按 OK 后,所有列都消失了。

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

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

          项目清理:我必须按照以下程序清理我的项目:

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

          警告:我进行了建议的更改,并且我的项目没有任何问题。但是,在像我描述的那样进行手动更正之前,请务必备份您的项目。

          祝你好运,编码愉快。

          【讨论】:

            【解决方案6】:

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

            原因: 在我的情况下,我试图添加的新列在数据库中被命名为“覆盖”,这是 C# 中的保留字。设计师试图用它现有的名称添加列,这当然是把事情搞砸了。

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-01-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-10-11
                • 1970-01-01
                • 2012-01-22
                相关资源
                最近更新 更多