2

I'm working on an app for a mobile device and would like to make a datagrid scrollbar button larger to enhance the touch screen usability. I do not want to alter the system settings windows display properties as this will affect the device as a whole.

Is there an easy way to alter the width of the scrollbar on a datagrid view?

jasonk
  • 1,580
  • 4
  • 25
  • 33
  • jasonk: i put together a very simple sample of a custom grid scroller here: http://www.mediafire.com/?nzjnmmjji31 (I also added the link to my answer. Let me know if you want to pursue the idea further.) – Paul Sasik Mar 26 '10 at 14:27

2 Answers2

2
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;

Where 50 is the vertical scrollbar width and 0 is the horizontal scrollbar height.

using System.Reflection;

all at the beginning of your form.

It works for WinCE 5.0.

Marcel Gosselin
  • 4,610
  • 2
  • 31
  • 54
Mexaformo
  • 21
  • 2
1

i think you'll have to roll your own. Not to worry though, it shouldn't be that hard. i say shouldn't because it's been a while since i've done .NET CF UI (shooting from the hip) but have implemented a custom scroller for a .NET 2.0 touch screen UI.

That said, here's what you need to do:

  • Hide the scroll bars in the grid view
  • Create a custom control which hosts two buttons, one top, one bottom
  • Handle the clicks on those buttons and forward them as scroll up/down calls to the grid view

That's the simple way. You don't get the dragging and stuff but that's rarely useful in such a tiny UI anyway. You could also put in later if you want.

Caveat: The grid view might not have ScrollUp/Down APIs exposed. In that case you'll need to overlay your custom control on top of the grid view which will have the scroll bars shown. You hide the built-in scroll bars with your custom control and instead of calling ScrollUp/Down you post windows messages to the area behind your custom control to "fake" clicks and get the grid view to move around the way you like.

Hmm. i was assuming .NET Compact Framework since you mentioned it's for a mobile device... Is it CF? If not, everything ought to be a little easier.

EDIT

Basic sample of custom grid scrolling here!

Paul Sasik
  • 79,492
  • 20
  • 149
  • 189