【问题标题】:Adding a new column is deleting all the existing columns of datagrid view添加新列正在删除datagridview的所有现有列
【发布时间】:2014-09-30 17:26:08
【问题描述】:

我正在使用一个 datagridview,其中我在设计模式中添加了列并且它不是数据绑定的。这个网格在很长一段时间内都工作得很好。现在我想在 datagrid 视图中插入一个新列,但我不是能够添加列。如果我添加它正在删除 datagridview 的所有现有列。我什至无法编辑现有列,因为同样的事情正在发生(删除 datagrid 视图的所有列)。我已经用谷歌搜索了这么多,找不到可能的解决方案。如果有人遇到同样的问题,请提供解决方案。 注意:我没有以编程方式添加任何行或列。它是一个使用 c# .net vs2010 的 Windows 应用程序。

谢谢

【问题讨论】:

  • 请提供几行代码说明您是如何添加新列的。
  • 我没有写任何代码。我只是通过点击datagridview控件选项-addcolumn/editcolumn选项来添加它
  • 重建你的解决方案,有时它解决了设计师代码的问题。

标签: c# .net winforms datagridview


【解决方案1】:

如果您在使用 winforms 设计器时遇到问题,请尝试删除并重新添加现有控件。确保不要更改设计器代码文件中的任何代码,除非您真的知道自己在做什么。

【讨论】:

  • 我也试过了。它显示错误“列名”不是有效的标识符。
  • 你试过完全删除datagridview吗?
  • 是的。我尝试完全删除 datagridview 并删除所有列并添加新列。两者都给出了相同的错误“列名”不是有效标识符。
  • 您可以尝试删除DataGridView,然后在设计器代码文件中查找属于视图的任何剩余部分。确保在编辑设计器代码之前先备份您的代码。
  • 此错误的可能原因是什么。“列名不是有效的标识符”
【解决方案2】:

Visual Studio 发生了变化,表单被拆分为 2 个文件:form.csform.designer.cs。我自己仍然有很多单文件表单,但它们可以正常工作。

我猜你已经对表单做了一些事情。例如,带有参数的新构造函数。或者手动编辑InitializeComponent 方法(永远不要这样做!)。如果可以的话,尝试在使用设计器时扭转这种情况。

更多 clean 将通过检查 InitializeComponent 方法代码简单地写下您必须对 DataGridView 执行的所有操作,然后只需添加新的 DataGridView 并在设计器中再次执行所有操作.

更好的解决方案是从头开始重新设计表单。重构几年前的代码是个好主意,特别是如果你有这样的问题。

【讨论】:

    【解决方案3】:

    从我读过的论坛来看,这似乎是 Visual Studio 中的一个现有错误。我建议您在“Form.Designer.cs”中手动写出代码。您必须正确输入各自的代码,然后您的列将自动出现在 DataGridView 中,而不会出现使用图形用户界面时出现的“列不是有效标识符”问题。

    Form.Designer.cs

    #region Component Designer generated code
    
    /// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor.
    /// </summary>
    
    private void InitializeComponent()
    {
        this.YourColumnName = new System.Windows.Forms.DataGridViewTextBoxColumn();
        this.dataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.YourColumnName
        });
        // 
        // YourColumnName
        // 
        this.YourColumnName.HeaderText = "Your Column Name";
        this.YourColumnName.Name = "YourColumnName";
        this.YourColumnName.ReadOnly = true;
        // 
    }
    
    #endregion
    private System.Windows.Forms.DataGridViewTextBoxColumn YourColumnName;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多