DoubleBufferPanel: Panel with double buffer and utility functions.

This commit is contained in:
2017-02-05 01:07:58 +01:00
parent 1fbb85c101
commit 11dab2e63e
4 changed files with 70 additions and 15 deletions

View File

@@ -123,17 +123,17 @@ namespace CsvView
return csvParser.Data[0];
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
private const int WM_SetRedraw = 0XB;
bool _rendering = false;
private void RenderReg(long currentReg)
{
if (_index == null || _index.Count <= 0)
{
RenderRegClean();
}
if (_rendering) { return; }
_rendering = true;
pnlReg.Enabled = true;
bool first = false;
bool last = false;
@@ -148,6 +148,9 @@ namespace CsvView
last = true;
}
pnlData.SuspendDrawing();
pnlData.Controls.Clear();
_currentReg = currentReg;
txtCurrentReg.Text = Convert.ToString(currentReg);
txtTotalRegs.Text = Convert.ToString(_totalRegs);
@@ -158,9 +161,7 @@ namespace CsvView
btnNextReg.Enabled = (last == false);
List<string> currentData = Index_LoadReg((int)currentReg);
pnlData.Visible = false;
pnlData.Controls.Clear();
int y = 0;
const int TexboxPadding = 5;
const int Padding = 9;
@@ -171,7 +172,9 @@ namespace CsvView
pnlData.Controls.Add(txtValue);
y += txtValue.Height + Padding;
}
pnlData.Visible = true;
pnlData.ResumeDrawing();
_rendering = false;
}
private TextBox RenderValue(string value, int y, int TexboxPadding, int Padding, int LineHeight)
@@ -199,12 +202,20 @@ namespace CsvView
private void RenderRegClean()
{
if (_rendering) { return; }
_rendering = true;
pnlData.SuspendDrawing();
pnlData.Controls.Clear();
pnlReg.Enabled = false;
txtCurrentReg.Text = string.Empty;
txtTotalRegs.Text = string.Empty;
pnlData.Controls.Clear();
}
pnlData.ResumeDrawing();
_rendering = false;
}
private void btnFirstReg_Click(object sender, EventArgs e)
{
RenderReg(0);