C# 添加新列将删除datagrid视图的所有现有列

C# 添加新列将删除datagrid视图的所有现有列,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我正在使用datagridview,其中我在设计模式下添加了列,但它不是数据绑定的。此网格在很长一段时间内工作正常。现在我想在datagrid视图中插入一个新列,我无法添加该列。如果我添加该列,则会删除datagridview的所有现有列。我甚至无法编辑现有列,因为同样的事情正在发生(删除datagrid view的所有列).我在谷歌上搜索了太多,找不到可能的解决方案。如果有人遇到同样的问题,请提供解决方案。 注意:我没有以编程方式添加任何行或列。这是一个使用c#.net vs2010的wind

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


谢谢

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

当窗体被拆分为两个文件时,visual studio中发生了更改:
form.cs
form.designer.cs
。我自己仍然有很多单文件表单,但它们可以正常工作

我猜你对表格做了些什么。例如,使用参数创建新构造函数。或者手动编辑
InitializeComponent
method(千万不要这样做!)。在使用designer时,如果可以的话,尝试将其反转一段时间

更简洁的方法是,通过检查
InitializeComponent
方法代码,简单地写下您必须对
DataGridView
执行的所有操作,然后简单地添加新的
DataGridView
并在designer中再次执行所有操作


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

从我读到的论坛上,这似乎是Visual Studio中存在的一个bug。我建议您在“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;
#区域组件设计器生成的代码
///  
///设计器支持所需的方法-不修改
///此方法的内容与代码编辑器一起使用。
/// 
私有void InitializeComponent()
{
this.YourColumnName=new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dataGridView.Columns.AddRange(新的System.Windows.Forms.DataGridViewColumn[]{
这是你的名字
});
// 
//你的名字
// 
this.YourColumnName.HeaderText=“Your Column Name”;
this.YourColumnName.Name=“YourColumnName”;
this.YourColumnName.ReadOnly=true;
// 
}
#端区
private System.Windows.Forms.DataGridViewTextBoxColumn YourColumnName;

请提供几行代码,说明如何添加新列。我没有编写任何代码。我只是通过单击datagridview控件选项addcolumn/editcolumn选项来添加它。重建您的解决方案,有时它解决了设计器代码的问题。我也尝试了。显示错误“column name”不是有效的标识符。是否尝试完全删除datagridview?是的。我尝试完全删除datagridview,同时删除所有列并添加新列。两者都给出了相同的错误“column name”不是有效标识符。您可以尝试删除
DataGridView
,然后在设计器代码文件中查找属于该视图的任何剩余内容。请确保在编辑设计器代码之前先备份代码。此错误的可能原因是什么。“列名不是有效的标识符”