2010-01-28 11 views
29

나는 컨트롤이 DataGridView 인 WinForms 응용 프로그램을 가지고 있습니다. 내 컨트롤에 5 개의 열이 있습니다 (예 : "이름", "주소", "전화"등)DataGridView - 열 너비를 설정하는 방법?

기본 열 너비에 만족하지 않습니다. 열의 모양을보다 잘 제어하고 싶습니다. 내가 를 원하는 것은 다음 중 하나를 수행 할 수 있습니다 : 픽셀

  • 를 사용하여 다른 최고의 practive 방법 퍼센트에서 각 열의
  • 설정 폭을 각 열의

    • 설정 폭을 (만들기 텍스트에 맞게 너비 등)

    사용할 속성 및 방법을 제안하십시오.

  • 답변

    41

    당신은 그것을 수행 할 DataGridViewColumn.Width 속성을 사용할 수 있습니다 :

    DataGridViewColumn column = dataGridView.Columns[0]; 
    column.Width = 60; 
    

    http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcolumn.width.aspx

    +2

    고마워요! 나는 왜 그것이 나를 위해 일하지 않고 있는지 깨달았다. MSDN에서 이 속성을 설정할 때 지정된 값이 MinimumWidth 속성의 값보다 작은 경우 대신 MinimumWidth 속성 값이 사용됩니다. –

    +1

    예, 너비를 Grid 컨트롤에 직접 사용할 수 없으므로 ItemStyle.With를 사용하여 속성을 설정합니다. – Bhaskar

    6

    최종 총알에 관한

    메이크업 폭을 텍스트

    당신에 맞게 .AutoSizeMode를 실험 해 볼 수 있습니다. 당신의 DataGridViewColumn, 다음 값 중 하나로 설정 :

    None 
    AllCells 
    AllCellsExceptHeader 
    DisplayedCells 
    DisplayedCellsExceptHeader 
    ColumnHeader 
    Fill 
    
    MSDN 페이지

    더 많은 정보

    21

    도 시도 할 수있는 다음과 같은 :

    DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells 
    

    또는은에서 다른 설정 옵션을 사용하여 DataGridViewAutoSizeColumnsMode 열거

    +2

    이것은 가장 좋은 답변입니다.그런 다음 DataGridView의 너비에 맞게 양식의 크기를 조정할 수 있습니다. 감사 표시 이것은 저에게 많은 번거 로움을 덜어주었습니다. – Glimpse

    +1

    매우 좋음 ... 및 행에 대해이 대답을 사용할 수 있습니다 ... –

    +2

    "채우기"옵션을 사용하면 열이 눈금의 전체 너비를 채우기 위해 펼쳐집니다. –

    2
    public static void ArrangeGrid(DataGridView Grid) 
    { 
        int twidth=0; 
        if (Grid.Rows.Count > 0) 
        { 
         twidth = (Grid.Width * Grid.Columns.Count)/100; 
         for (int i = 0; i < Grid.Columns.Count; i++) 
          { 
          Grid.Columns[i].Width = twidth; 
          } 
    
        } 
    } 
    
    2

    사용 :

    yourdataView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); 
    
    3

    내가이 같은 모든 그리드의 컬럼에 폭을 제공하기 위해 제안 :

    col = new DataGridViewTextBoxColumn(); 
    col.HeaderText = "address"; 
    col.Width = 120; 
    
    :
    DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn(); 
    col.HeaderText = "phone"    
    col.Width = 120; 
    col.DataPropertyName = (if you use a datasource) 
    thegrid.Columns.Add(col);  
    

    주 (또는 긴) 열의

    이 작업을 수행 (의 주소 가정 해 봅시다)

    까다로운 부분

    col.MinimumWidth = 120; 
    col.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 
    

    까다로운 부분 양식을 늘릴 경우이 방법으로

    col.DataPropertyName = (same as above) 
    thegrid.Columns.Add(col); 
    

    는,이 경우, 주소 열을 주요 열 (그리드 그의 용기에 "도크가 작성"입니다) 모든 공간이 필요하지만 그것은 결코 간다 col.MinimumWidth보다 작으므로 크기가 조정 된 것은 유일합니다.

    그리드가 있고 마지막 열이 아이콘 세부 정보 나 아이콘 삭제와 같은 이미지를 표시하는 데 사용되며 머리글이없고 항상 가장 작은 아이콘이어야합니다. .

    15

    위의 솔루션 대부분은 부모 DateGridView.AutoSizeMode이 아니며 Fill과 같지 않다고 가정합니다. 눈금에 Fill이되도록 .AutoSizeMode을 설정하면 특정 열 너비를 수정하고 다른 열을 채우게하려면 각 의 AutoSizeMode를 None으로 설정해야합니다. 열 너비를 변경하고 .AutoSizeModeNone이 아닌 경우 Null 개체와 관련하여 이상한 MS 예외가 발견되었습니다.

    chart.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 
    ... add some columns here 
    chart.Column[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; 
    chart.Column[i].Width = 60; 
    

    이 국경 두께 설정에 관한 일부 내부 객체에 대한 널 예외가 발생합니다 작동합니다.

    chart.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 
    ... add some columns here 
    // chart.Column[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; 
    chart.Column[i].Width = 60; 
    
    +0

    이것은 시간까지 디버깅하는 데 도움이 .. .. !! – coding

    +0

    좋은 제안, 진짜 이상한 ... : ~ – Bastiaan

    1

    나는 당신이, 당신은 열이 당신은 당신이 편집 할 열을 선택할 수있는 열 편집 속성을 열고 property.Once 내부에있는 열 너비 속성을 조작 할 수 있습니다, 프로그래밍을 할 싶지 않다 바운드 열 속성의 레이아웃 섹션까지 아래로 스크롤하고 너비를 변경합니다.

    1
    DataGridView1.Columns.Item("Adress").Width = 60 
        DataGridView1.Columns.Item("Phone").Width = 30 
        DataGridView1.Columns.Item("Name").Width = 40 
        DataGridView1.Columns.Item("Etc.").Width = 30 
    
    9

    나는이 오래된 질문은 알고 있지만 아무도 첫 번째 부분, 은 백분율 폭을 설정 대답하지 않습니다.FillWeight (MSDN)으로 쉽게 수행 할 수 있습니다. 누군가 다른 사람이이 대답을 알게되면

    디자이너를 채우기 위해 DataGridAutoSizeColumnMode를 설정할 수 있습니다. FormLoad 이벤트 또는 그리드에 데이터를 바인딩 한 후, 뒤에 코드에서 다음 (100)의 각 열 FillWeight을 제공 기본적으로, 당신은 간단하게 할 수 있습니다

    gridName.Columns[0].FillWeight = 200; 
    gridName.Columns[1].FillWeight = 50; 
    

    등등, 비례 어떤 무게에 대한 당신이 원하는. 리터럴 퍼센트 너비에 대해 100을 더한 숫자가있는 모든 단일 열을 수행하려는 경우에도 그렇게 할 수 있습니다.

    사용자가 창 크기를 조정하더라도 머리글이 전체 공간을 사용하는 멋진 전체 DataGrid를 제공합니다. 와이드 스크린에서 좋게 보입니다 (4 : 3).

    -2

    또는 단순히 양식에 갈 수 있고 표시 할 데이터를 호출 할 때 속성을 설정 같은 datagridview1.columns (0) .width = 150 datagridview1.columns (1) .width = 150 datagridview1.columns (2) .width = 그래서 간단한 enter code here

    (150) 당신은 하나 개의 루프 만 아래 모든 열과 행에 대한 기본 폭과 높이를 설정할 수 있습니다 브로

    0

    저와 너무 잘했다.

    // DataGridView Name= dgvMachineStatus 
    
        foreach (DataGridViewColumn column in dgvMachineStatus.Columns) 
         { 
          column.Width = 155; 
         } 
    
        foreach (DataGridViewRow row in dgvMachineStatus.Rows) 
         { 
          row.Height = 45; 
         } 
    
    관련 문제