2010-03-24 5 views
2

모바일 장치 용 앱에서 작업 중이며 터치 스크린 사용 편의성을 높이기 위해 DataGrid 스크롤 막대 단추를 더 크게 만들고 싶습니다. 이 설정은 장치 전체에 영향을 미치기 때문에 시스템 설정 창 표시 속성을 변경하고 싶지 않습니다.DataGridView의 스크롤 막대 너비 설정

DataGrid 뷰에서 스크롤 막대의 너비를 쉽게 변경할 수 있습니까?

+0

jasonk : 여기에 사용자 정의 그리드 스크롤러의 간단한 샘플을 함께 넣어 둡니다. http://www.mediafire.com/?nzjnmmjji31 (필자는 내 대답에 대한 링크도 추가했습니다. 아이디어 더.) –

답변

1

나는 스스로를 굴려 야한다고 생각합니다. 걱정하지 마라, 그렇게 어렵지 않아야한다. 나는 .NET CF UI (엉덩이에서 촬영)를 한 후에 .NET 2.0 터치 스크린 UI 용 사용자 정의 스크롤러를 구현 한 이후로 오랜 시간이 걸려서는 안된다고 말합니다.

여기에 당신이해야 할 무엇, 말했다 :

  • 그리드 뷰
  • 두 개의 버튼, 하나 개의 정상, 하나의 하단
  • 를 호스팅하는 사용자 지정 컨트롤을 만들기에있는 스크롤 막대를 숨기기 처리하는 해당 버튼을 클릭하고 그리드보기로 스크롤 위/아래 호출로 전달합니다.

간단한 방법입니다. 드래그 앤 물건을 얻지는 않지만 어쨌든 그런 작은 UI에서는 거의 유용하지 않습니다. 원한다면 나중에 넣을 수도 있습니다.

경고 : 격자보기에 ScrollUp/Down API가 노출되지 않았을 수 있습니다. 이 경우 스크롤 막대가 표시된 격자보기 위에 사용자 정의 컨트롤을 겹쳐 써야합니다. 사용자 정의 컨트롤을 사용하여 내장 스크롤 막대를 숨기고 ScrollUp/Down을 호출하는 대신 사용자 정의 컨트롤 뒤에있는 영역에 창 메시지를 게시하여 "가짜"클릭을하고 그리드 뷰를 원하는대로 이동할 수 있습니다.

흠. .NET Compact Framework는 모바일 장치 용이라고 언급 한 이후로 가정합니다. CF입니까? 그렇지 않다면, 모든 것이 조금 더 쉬워야합니다.

EDIT custom grid scrolling here!

+0

그것은 실제로 가득 차있는 Windows XP, 비스타 또는 7을 달리고있다. 전시 화면은 단지 5 "이다. – jasonk

1
(50)가 수직 스크롤바 폭이며, 0은 수평 스크롤 높이
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; 

Basic 샘플.

using System.Reflection; 

모두 양식 시작 부분에 있습니다.

WinCE 5.0에서 작동합니다.