【问题标题】:Efficient method of changing columns in a DataGridView在 DataGridView 中更改列的有效方法
【发布时间】:2012-05-16 13:20:05
【问题描述】:

您好,我有一个空的 DatagridView,它在我开始向其中添加行之前被禁用。我有一个组合框,它有两个可选选项,用于控制要加载到其中的信息并改变其中的列。现在,在组合框的 SelectionChanged 事件中,我有类似的内容:

if (defaultComboBox.SelectedIndex == 0)
   {
   if (extractionDataGrid.Columns.Contains(companyIDColumn))
      {
         extractionDataGrid.Columns.Remove(companyIDColumn);
         extractionDataGrid.Columns.Remove(companyNameColumn);
         extractionDataGrid.Columns.Remove(maintenanceColumn);
         extractionDataGrid.Columns.Remove(simColumn);
      }

      extractionDataGrid.Columns.Add(userNameColumn);
      extractionDataGrid.Columns.Add(departmentColumn);
      extractionDataGrid.Columns.Add(officePhoneColumn);
      extractionDataGrid.Columns.Add(officePhontExtColumn);
      extractionDataGrid.Columns.Add(otherPhoneColumn);
. [18 columns]
.
.
.

而选择的索引为 1 则相反。这里有很多列,并试图想办法避免使用大量代码来初始化新的 datagridview 列、调整标题文本、调整自动大小模式和各种其他参数。此外,当我在所选索引之间来回切换时,这实际上每次都会以不同的顺序添加列。它们应该按照我在这里设置的顺序添加??

谢谢。

【问题讨论】:

    标签: c# datagridview


    【解决方案1】:
    1. 将所有 0 索引列添加到列表中
    2. 将所有 1 个索引列添加到另一个列表中
    3. 将列的列表传递给您创建的新方法,该方法迭代列表以根据需要添加或删除。
    4. 在您的添加/删除方法上设置同步锁。这可能是由于

      而导致出现不同订单的原因

      extractionDataGrid.Columns.Remove(companyIDColumn);

    即在网格完全更新之前满足条件。 或者更改条件,使其独立于列顺序,并检查仅在添加和或删除所有列之后设置的变量。

    switch (gridMode){
      case GridMode.Company:
       this.AddColumns(userColumnList);
       gridMode = GridMode.User;
       break;
      case GridMode.User:
       this.AddColumns(userColumnList);
       gridMode = GridMode.Company;
       break;
    }
    
    protected void AddColumns(List<Column> adds){
      extractDataGrid.Layout.Suspend();
      extractionDataGrid.Columns.Clear();
      foreach(Column c in adds){
       extractionDataGrid.Columns.Add(c); 
      }
    extractDataGrid.Layout.Resume();
    }
    

    或者,如果可以的话,不要删除列,而是关闭可见性。

    【讨论】:

      猜你喜欢
      • 2017-06-20
      • 2013-09-13
      • 2010-10-13
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2011-04-11
      • 2015-11-10
      • 2011-09-26
      相关资源
      最近更新 更多