* UIDataGridView:重绘水平滚动条

This commit is contained in:
Sunny 2020-07-18 22:06:58 +08:00
parent e392a78305
commit d63d8e6ce9
7 changed files with 47 additions and 11 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -81,7 +81,6 @@
dataGridViewCellStyle4.BackColor = System.Drawing.Color.White;
this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.uiDataGridView1.RowTemplate.Height = 29;
this.uiDataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.uiDataGridView1.SelectedIndex = -1;
this.uiDataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.uiDataGridView1.ShowRect = false;

View File

@ -9,9 +9,10 @@ namespace Sunny.UI.Demo
{
InitializeComponent();
uiDataGridView1.AddColumn("Column1", "Column1", 100);
uiDataGridView1.AddColumn("Column2", "Column2").SetFixedMode(100);
uiDataGridView1.AddColumn("Column3", "Column3").SetFixedMode(100);
uiDataGridView1.AddColumn("Column1", "Column1").SetFixedMode(400);
uiDataGridView1.AddColumn("Column2", "Column2").SetFixedMode(400);
uiDataGridView1.AddColumn("Column3", "Column3").SetFixedMode(400);
uiDataGridView1.AddColumn("Column4", "Column4").SetFixedMode(400);
uiDataGridView1.ReadOnly = true;
}

View File

@ -31,6 +31,7 @@ namespace Sunny.UI
public sealed class UIDataGridView : DataGridView, IStyleInterface
{
private readonly UIScrollBar VBar = new UIScrollBar();
private readonly UIHorScrollBar HBar = new UIHorScrollBar();
public UIDataGridView()
{
@ -45,6 +46,14 @@ namespace Sunny.UI
VBar.ForeColor = UIColor.Blue;
VBar.StyleCustomMode = true;
VBar.ValueChanged += VBarValueChanged;
HBar.Parent = this;
HBar.Visible = false;
HBar.FillColor = UIColor.LightBlue;
HBar.ForeColor = UIColor.Blue;
HBar.StyleCustomMode = true;
HBar.ValueChanged += HBar_ValueChanged;
SetBarPosition();
//支持自定义标题行风格
@ -70,8 +79,17 @@ namespace Sunny.UI
StripeOddColor = UIColor.LightBlue;
VerticalScrollBar.ValueChanged += VerticalScrollBar_ValueChanged;
HorizontalScrollBar.VisibleChanged += HorizontalScrollBar_VisibleChanged;
}
Style = UIStyle.Blue;
private void HorizontalScrollBar_VisibleChanged(object sender, EventArgs e)
{
HBar.Value = FirstDisplayedScrollingColumnIndex;
}
private void HBar_ValueChanged(object sender, EventArgs e)
{
FirstDisplayedScrollingColumnIndex = HBar.Value;
}
public void Init()
@ -132,14 +150,13 @@ namespace Sunny.UI
public void SetScrollInfo()
{
if (VBar == null)
if (VBar == null || HBar == null)
{
return;
}
if (VerticalScrollBar.Visible)
{
SetBarPosition();
VBar.Maximum = RowCount - 1;
VBar.Value = FirstDisplayedScrollingRowIndex;
VBar.Visible = true;
@ -148,6 +165,19 @@ namespace Sunny.UI
{
VBar.Visible = false;
}
if (HorizontalScrollBar.Visible)
{
HBar.Maximum = ColumnCount - 1;
HBar.Value = FirstDisplayedScrollingColumnIndex;
HBar.Visible = true;
}
else
{
HBar.Visible = false;
}
SetBarPosition();
}
protected override void OnMouseWheel(MouseEventArgs e)
@ -192,6 +222,12 @@ namespace Sunny.UI
VBar.Width = ScrollBarInfo.VerticalScrollBarWidth() + 1;
VBar.Height = Height - 2;
VBar.BringToFront();
HBar.Left = 2;
HBar.Height = ScrollBarInfo.HorizontalScrollBarHeight() + 1;
HBar.Width = Width - (VBar.Visible ? VBar.Width : 0) - 2;
HBar.Top = Height - HBar.Height - 2;
HBar.BringToFront();
}
protected override void OnColumnAdded(DataGridViewColumnEventArgs e)
@ -263,8 +299,8 @@ namespace Sunny.UI
StripeEvenColor = uiColor.GridStripeEvenColor;
StripeOddColor = uiColor.GridStripeOddColor;
VBar.FillColor = uiColor.GridStripeOddColor;
VBar.ForeColor = uiColor.PrimaryColor;
HBar.FillColor = VBar.FillColor = uiColor.GridStripeOddColor;
HBar.ForeColor = VBar.ForeColor = uiColor.PrimaryColor;
Invalidate();
}