DataGridView, вместо прокрутки две кнопки - C#
Формулировка задачи:
Всем доброго времени суток. Подскажите, пожалуйста. Этот код для textboxa работает на ура, но для грида полное бездействие...Может там как то по другому нужно.
Благодарю добрых человечков.
Листинг программы
- private const int SB_HORZ = 0x0;
- private const int SB_VERT = 0x1;
- private const int WM_HSCROLL = 0x114;
- private const int WM_VSCROLL = 0x115;
- private const int SB_THUMBPOSITION = 4;
- [DllImport("user32.dll")]
- private static extern int GetScrollPos(IntPtr hWnd, int nBar);
- [DllImport("user32.dll")]
- private static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
- [DllImport("user32.dll")]
- private static extern bool PostMessageA(IntPtr hWnd, int nBar, int wParam, int lParam);
- ///////***************////////
- События на нажатие "кнопок" вверх-вниз
- private void pictureBox6_Click(object sender, EventArgs e)
- {
- int originalLine = GetScrollPos(dataGridView1.Handle, SB_VERT);//SB_VERT=0, исх мин, исх максим.
- int i = originalLine - 1;
- label2.Text = i.ToString();
- if (i < 9 && i >= -1)
- {
- SetScrollPos(dataGridView1.Handle, SB_VERT, i, true);
- PostMessageA(dataGridView1.Handle, WM_VSCROLL, SB_THUMBPOSITION + 0x10000 * i, 0);
- }
- }
- private void pictureBox7_Click(object sender, EventArgs e)
- {
- int originalLine = GetScrollPos(dataGridView1.Handle, SB_VERT);
- int i = originalLine + 1;
- label1.Text = i.ToString();
- SetScrollPos(dataGridView1.Handle, SB_VERT, i, true);
- PostMessageA(dataGridView1.Handle, WM_VSCROLL, SB_THUMBPOSITION + 0x10000 * i, 0);
- }
Может там свойства какие-нибудь нужны обязательные? Никто с этим не сталкивался?
Решение задачи: «DataGridView, вместо прокрутки две кнопки»
textual
Листинг программы
- using System.Runtime.InteropServices;
- private const int WM_SCROLL = 276;
- private const int WM_VSCROLL = 277;
- private const int SB_LINEUP = 0;
- private const int SB_LINEDOWN = 1;
- private const int SB_ENDSCROLL = 8;
- private const int SB_VERT = 0x1;
- [DllImport("user32.dll")]
- private static extern bool PostMessage(IntPtr hWnd, int nBar, int wParam, IntPtr hWn);
- [DllImport("user32.dll")]
- static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- static extern int GetScrollPos(IntPtr hWnd, int nBar);
- //и соответственно события на две кнопки (вниз-вверх)
- private void pictureBox9_Click(object sender, EventArgs e)
- {
- VScrollBar barraVertical = null;
- foreach (Control c in dataGridView1.Controls)
- {
- if (c is VScrollBar) barraVertical = (VScrollBar)c;
- }
- if (barraVertical != null)
- {
- PostMessage(dataGridView1.Handle, WM_VSCROLL, SB_LINEUP, barraVertical.Handle);
- PostMessage(dataGridView1.Handle, WM_VSCROLL, SB_ENDSCROLL, barraVertical.Handle);
- }
- }
- private void pictureBox8_Click(object sender, EventArgs e)
- {
- VScrollBar barraVertical = null;
- foreach (Control c in dataGridView1.Controls)
- {
- if (c is VScrollBar) barraVertical = (VScrollBar)c;
- }
- if (barraVertical != null)
- {
- PostMessage(dataGridView1.Handle, WM_VSCROLL, SB_LINEDOWN, barraVertical.Handle);
- PostMessage(dataGridView1.Handle, WM_VSCROLL, SB_ENDSCROLL, barraVertical.Handle);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д