문제

VS2008에는 DatagridView가 포함 된 WinForm이 있습니다. Datagrid에는 여러 열이있는 목록이 포함되어 있습니다. 이것들은 고정 너비이며, 남은 공간을 가져 가서 볼의 너비를 채우기 위해 설정 한 내용입니다. Winform은 모든 방향으로 다시 시작할 수 있습니다.

내가 해결하려는 문제는 창의 수직 크기를 늘리면 스크롤 바가 사라지고 열이 오른쪽으로 스냅되어 추가 공간을 채우는 것입니다. 내가하고 싶은 것은 수직 스크롤 바가 결코 사라지지 않는다는 것입니다. DatagridView의 속성에서 스크롤 바를 수직으로 설정하는 것은이 작업을 수행하지 않습니다.

이것이 달성 할 수 있습니까? 그렇다면 수직 스크롤 바가 항상 보이게하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

DataGridView를 서브 클래싱하고 수직 Scrollbar의 VisibleChanged 이벤트를 처리하십시오. 기본 동작을 무시하고 보이는 속성을 거기에서 true로 설정할 수 있어야합니다.

이런 것 같아요 ...

public class SubclassedDataGridView : DataGridView
    {
        public SubclassedDataGridView (): base()
        {
            VerticalScrollBar.VisibleChanged += new EventHandler(VerticalScrollBar_VisibleChanged);
        }

        void VerticalScrollBar_VisibleChanged(object sender, EventArgs e)
        {
            VerticalScrollBar.Visible = true;
        }
     }

다른 팁

제 경우에는 그리드를 정렬하는 데 도움이되었습니다. 다음과 같이 STH를 사용해보십시오.

 if (gridName.SortedColumn == null)
   gridName.Sort(gridNameColumns[columnName],ListSortDirection.Ascending);
 else
 {
    ListSortDirection dir;
    if (gridName.SortOrder == SortOrder.Descending) 
       dir = ListSortDirection.Descending;
    else dir = ListSortDirection.Ascending;

    gridName.Sort(gridName.SortedColumn, dir);
 }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top