DotNet / 编程技术 · 2023年5月22日

DataGridView控件出现”为自动填充列调整大小期间不能执行此操作”异常的解决方法

显示表格数据时,出现如下错误:
“为自动填充列调整大小期间不能执行此操作”
此错误的出现有一定的随机性,且无法使用Try Catch或DataGridView的OnError事件捕获,属于表格控件的内部线程在处理显示错误时出现的异常,此异常不属于自身代码问题,所以只能曲线救国。
************** 异常文本 **************
System.InvalidOperationException: 为自动填充列调整大小期间不能执行此操作。
   在 System.Windows.Forms.DataGridView.PerformLayoutPrivate(Boolean useRowShortcut, Boolean computeVisibleRows, Boolean invalidInAdjustFillingColumns, Boolean repositionEditingControl)
   在 System.Windows.Forms.DataGridView.SetColumnHeadersHeightInternal(Int32 columnHeadersHeight, Boolean invalidInAdjustFillingColumns)
   在 System.Windows.Forms.DataGridView.AutoResizeColumnHeadersHeight(Boolean fixedRowHeadersWidth, Boolean fixedColumnsWidth)
   在 System.Windows.Forms.DataGridView.OnColumnHeadersGlobalAutoSize()
   在 System.Windows.Forms.DataGridView.set_TopLeftHeaderCell(DataGridViewHeaderCell value)
   在 System.Windows.Forms.DataGridView.GetCellInternal(Int32 columnIndex, Int32 rowIndex)
   在 System.Windows.Forms.DataGridView.OnCellMouseEnter(DataGridViewCellEventArgs e)
   在 System.Windows.Forms.DataGridView.UpdateMouseEnteredCell(HitTestInfo hti, MouseEventArgs e)
   在 System.Windows.Forms.DataGridView.OnColumnWidthChanged(DataGridViewColumnEventArgs e)
   在 System.Windows.Forms.DataGridView.OnBandThicknessChanged(DataGridViewBand dataGridViewBand)
   在 System.Windows.Forms.DataGridView.AdjustFillingColumns()
   在 System.Windows.Forms.DataGridView.ComputeLayout()
   在 System.Windows.Forms.DataGridView.PerformLayoutPrivate(Boolean useRowShortcut, Boolean computeVisibleRows, Boolean invalidInAdjustFillingColumns, Boolean repositionEditingControl)
   在 System.Windows.Forms.DataGridView.OnHandleCreated(EventArgs e)
   在 System.Windows.Forms.Control.WmCreate(Message& m)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.DataGridView.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

因为此异常的原因在于内部计算表列头的尺寸问题出现的异常,所以解决思路就是先默认禁用自动调整表列头,在显示完整以后,再启用自动调整表列头,可完美解决此问题。
一般可以在窗体Load事件中调用,示例:
xDataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize

最新电影,电视剧,尽在午夜剧场

电影电视剧午夜不寂寞