2017-08-12 13 views
0

dataGridView(grdBandControl)のデータソースは毎秒更新されます。DataWindowのために更新されたデータソースを除くColumnWidthChangedイベント

更新するたびにgrdBandControl_ColumnWidthChangedが発生します。

カラムヘッダーのサイズを視覚的に変更し、関連する変数に格納することで、カラムのサイズを手動で変更したいと考えています。

どのように私はgrdBandControl_ColumnWidthChangedがどちらか発射される区別することができますので、

class ColumnNameWidth 
{ 
    public string ColumnName { get; set; } 
    public int ColumnWidth { get; set; } 
} 
List<ColumnNameWidth> ColumnNameWidths = new List<ColumnNameWidth>(); 

void grdBandControl_DataSourceUpdate() 
{ 
    //some dataTable from Db i.e. 
    grdBandControl.DataSource = dataTable; 
    foreach (var columnNameWidth in ColumnNameWidths) 
    { 
     grdBandControl.Columns[columnNameWidth.ColumnName].Width = columnNameWidth.ColumnWidth; 
    } 
} 

private void grdBandControl_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) 
{ 
    foreach (DataGridViewColumn col in grdBandControl.Columns) 
    { 
     var columnNameWidth = ColumnNameWidths.FirstOrDefault(x => x.ColumnName == col.Name); 
     if (columnNameWidth != null) 
      columnNameWidth.ColumnWidth = col.Width; 
     else 
      ColumnNameWidths.Add(new ColumnNameWidth 
      { 
       ColumnName = col.Name, 
       ColumnWidth = col.Width 
      }); 
    } 
} 

答えて

0

  • データソースを視覚的に

コードは以下のように、それはアイデアを与えることが可能とされているサイズ変更

  • を更新いくつかを掘った後、私はの代わりに0が問題を解決します。

    private void grdBandControl_MouseUp(object sender, MouseEventArgs e) 
    { 
        foreach (DataGridViewColumn col in grdBandControl.Columns) 
        { 
         var columnNameWidth = ColumnNameWidths.FirstOrDefault(x => x.ColumnName == col.Name); 
         if (columnNameWidth != null) 
          columnNameWidth.ColumnWidth = col.Width; 
         else 
          ColumnNameWidths.Add(new ColumnNameWidth 
          { 
           ColumnName = col.Name, 
           ColumnWidth = col.Width 
          }); 
        } 
    } 
    
  • 関連する問題