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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д