2010-03-24 4 views
2

Я работаю над приложением для мобильного устройства и хотел бы сделать кнопку прокрутки datagrid больше, чтобы улучшить удобство использования сенсорного экрана. Я не хочу изменять свойства отображения окон системных настроек, так как это повлияет на устройство в целом.Установите ширину полосы прокрутки DataGridView

Есть ли простой способ изменить ширину полосы прокрутки на представлении данных?

+0

jasonk: Я собрал очень простой образец пользовательского скроллера сетки здесь: http://www.mediafire.com/?nzjnmmjji31 (Я также добавил ссылку на мой ответ. Сообщите мне, хотите ли вы продолжить идея далее.) –

ответ

1

Я думаю, вам придется сворачивать самостоятельно. Не волноваться, это не должно быть так сложно. я говорю не должен, потому что прошло некоторое время с тех пор, как я сделал .NET CF UI (съемка с бедра), но внедрил специальный скроллер для интерфейса экрана с сенсорным экраном .NET 2.0.

Тем не менее, вот что вам нужно сделать:

  • Скрыть полосы прокрутки в виде сетки
  • Создание пользовательского элемента управления в котором находится две кнопки, одна сверху, одна снизу
  • Обращайтесь с нажимает на эти кнопки и пересылает их в виде прокрутки вверх/вниз по сетке.

Это простой способ. Вы не получаете перетаскивание и прочее, но это редко используется в таком крошечном пользовательском интерфейсе. Вы также можете положить позже, если хотите.

Предостережение: вид сетки может не отображаться в ScrollUp/Down API. В этом случае вам нужно наложить свой собственный элемент управления поверх вида сетки, на котором будут показаны полосы прокрутки. Вы скрываете встроенные полосы прокрутки с помощью настраиваемого элемента управления и вместо вызова ScrollUp/Down вы отправляете сообщения Windows в область, расположенную за вашим пользовательским элементом управления, для «поддельных» кликов и получения вида сетки, чтобы перемещаться по своему усмотрению.

Хм. Я принимал .NET Compact Framework, так как вы упомянули о нем для мобильного устройства ... Это CF? Если нет, все должно быть немного легче.

РЕДАКТИРОВАТЬ

Базовый образец custom grid scrolling here!

+0

На самом деле он работает с полной Windows XP, Vista или 7. Экран дисплея всего 5 ". – jasonk

1
FieldInfo fi = dataGridView1.GetType().GetField("m_sbVert", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance); 

((VScrollBar) fi.GetValue(dataGridView1)).Width = 50; 

fi = ultraGrid1.GetType().GetField("m_sbHorz", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance); 

((HScrollBar) fi.GetValue(ultraGrid1)).Height = 0; 

где 50 представляет собой вертикальную ширину полосы прокрутки и 0 горизонтальная полоса прокрутки высота.

using System.Reflection; 

все в начале формы.

Работает для WinCE 5.0.

Смежные вопросы