From 20c744994e78bbcb2c743113b9d37bc6778b166b Mon Sep 17 00:00:00 2001 From: Sunny Date: Mon, 5 Sep 2022 15:46:44 +0800 Subject: [PATCH] =?UTF-8?q?*=20UIDataGridViewFooter:=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E6=96=87=E5=AD=97=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SunnyUI/Controls/UIDataGridViewFooter.cs | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/SunnyUI/Controls/UIDataGridViewFooter.cs b/SunnyUI/Controls/UIDataGridViewFooter.cs index a2982019..31484d5f 100644 --- a/SunnyUI/Controls/UIDataGridViewFooter.cs +++ b/SunnyUI/Controls/UIDataGridViewFooter.cs @@ -19,9 +19,9 @@ * 2021-04-20: V3.0.3 增加文件说明 * 2021-09-24: V3.0.7 文字显示方向与Column列显示方向一致 * 2021-11-22: V3.0.9 修复一处可能不显示的问题 + * 2022-09-05: V3.2.3 重构文字显示 ******************************************************************************/ -using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; @@ -54,12 +54,16 @@ namespace Sunny.UI dgv = value; if (dgv != null) { - dgv.ColumnWidthChanged += Dgv_ColumnWidthChanged; - dgv.HorizontalScrollBarChanged += Dgv_HorizontalScrollBarChanged; + dgv.Paint += Dgv_Paint; } } } + private void Dgv_Paint(object sender, PaintEventArgs e) + { + Invalidate(); + } + public void Clear() { dictionary.Clear(); @@ -82,16 +86,6 @@ namespace Sunny.UI } } - private void Dgv_HorizontalScrollBarChanged(object sender, EventArgs e) - { - Invalidate(); - } - - private void Dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) - { - Invalidate(); - } - /// /// 绘制前景颜色 /// @@ -104,7 +98,9 @@ namespace Sunny.UI foreach (DataGridViewColumn column in dgv.Columns) { bool ShowGridLine = dgv.CellBorderStyle == DataGridViewCellBorderStyle.Single; - Rectangle rect = dgv.GetCellDisplayRectangle(column.Index, 0, false); + Rectangle rect = dgv.GetColumnDisplayRectangle(column.Index, false); + if (rect.Width == 0) continue; + rect = new Rectangle(rect.Right - column.Width, rect.Top, column.Width, rect.Height); int minleft = ShowGridLine ? 1 : 0; if (rect.Left == minleft && rect.Width == 0) continue;