* 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; dataGridViewCellStyle4.BackColor = System.Drawing.Color.White;
this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle4; this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle4;
this.uiDataGridView1.RowTemplate.Height = 29; this.uiDataGridView1.RowTemplate.Height = 29;
this.uiDataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.uiDataGridView1.SelectedIndex = -1; this.uiDataGridView1.SelectedIndex = -1;
this.uiDataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; this.uiDataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.uiDataGridView1.ShowRect = false; this.uiDataGridView1.ShowRect = false;

View File

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

View File

@ -31,6 +31,7 @@ namespace Sunny.UI
public sealed class UIDataGridView : DataGridView, IStyleInterface public sealed class UIDataGridView : DataGridView, IStyleInterface
{ {
private readonly UIScrollBar VBar = new UIScrollBar(); private readonly UIScrollBar VBar = new UIScrollBar();
private readonly UIHorScrollBar HBar = new UIHorScrollBar();
public UIDataGridView() public UIDataGridView()
{ {
@ -45,8 +46,16 @@ namespace Sunny.UI
VBar.ForeColor = UIColor.Blue; VBar.ForeColor = UIColor.Blue;
VBar.StyleCustomMode = true; VBar.StyleCustomMode = true;
VBar.ValueChanged += VBarValueChanged; 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(); SetBarPosition();
//支持自定义标题行风格 //支持自定义标题行风格
EnableHeadersVisualStyles = false; EnableHeadersVisualStyles = false;
@ -64,14 +73,23 @@ namespace Sunny.UI
RowTemplate.Height = 29; RowTemplate.Height = 29;
RowTemplate.MinimumHeight = 29; RowTemplate.MinimumHeight = 29;
AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None; AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
//设置奇偶数行颜色 //设置奇偶数行颜色
StripeEvenColor = UIColor.White; StripeEvenColor = UIColor.White;
StripeOddColor = UIColor.LightBlue; StripeOddColor = UIColor.LightBlue;
VerticalScrollBar.ValueChanged += VerticalScrollBar_ValueChanged; 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() public void Init()
@ -132,14 +150,13 @@ namespace Sunny.UI
public void SetScrollInfo() public void SetScrollInfo()
{ {
if (VBar == null) if (VBar == null || HBar == null)
{ {
return; return;
} }
if (VerticalScrollBar.Visible) if (VerticalScrollBar.Visible)
{ {
SetBarPosition();
VBar.Maximum = RowCount - 1; VBar.Maximum = RowCount - 1;
VBar.Value = FirstDisplayedScrollingRowIndex; VBar.Value = FirstDisplayedScrollingRowIndex;
VBar.Visible = true; VBar.Visible = true;
@ -148,6 +165,19 @@ namespace Sunny.UI
{ {
VBar.Visible = false; 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) protected override void OnMouseWheel(MouseEventArgs e)
@ -192,6 +222,12 @@ namespace Sunny.UI
VBar.Width = ScrollBarInfo.VerticalScrollBarWidth() + 1; VBar.Width = ScrollBarInfo.VerticalScrollBarWidth() + 1;
VBar.Height = Height - 2; VBar.Height = Height - 2;
VBar.BringToFront(); 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) protected override void OnColumnAdded(DataGridViewColumnEventArgs e)
@ -263,8 +299,8 @@ namespace Sunny.UI
StripeEvenColor = uiColor.GridStripeEvenColor; StripeEvenColor = uiColor.GridStripeEvenColor;
StripeOddColor = uiColor.GridStripeOddColor; StripeOddColor = uiColor.GridStripeOddColor;
VBar.FillColor = uiColor.GridStripeOddColor; HBar.FillColor = VBar.FillColor = uiColor.GridStripeOddColor;
VBar.ForeColor = uiColor.PrimaryColor; HBar.ForeColor = VBar.ForeColor = uiColor.PrimaryColor;
Invalidate(); Invalidate();
} }