2012-02-14 8 views
7

C# 응용 프로그램에 DataGridView가 있습니다. 디자이너를 사용하여 AlternatingRowsDefaultCellStyle과 DGV 자체에 DefaultCellStyle 속성을 설정했습니다. 두 스타일 모두 패딩 값이 0, 0, 5, 0입니다. DataGridView 작업 추가 기능의 Edit Columns 메뉴에서 DGV 열에 대한 사용자 지정 스타일을 설정하지 않았습니다.단일 DataGridView 열의 모든 셀 패딩 변경

DGV에는 각 행에 대해 작은 그래프를 그리는 이미지 열이 하나의 열입니다. 이 열의 모든 셀에서 패딩을 제거하여 그래프의 끝에 공백이있는 셀에 패딩이 적용되지 않도록하고 싶습니다.

각 항목에서 필자는 열에있는 셀에서 패딩을 제거하지 않았고 예외를 throw하지 않았습니다.

// first attempt 
// taken from http://social.msdn.microsoft.com/Forums/eu/winforms/thread/a9227253-8bb4-429a-a700-8a3a255afe4d 
deviceGrid.Columns["GProduction"].DefaultCellStyle.Padding = new Padding(0); 

// second attempt 
DataGridViewCellStyle style = deviceGrid.Columns["Graph"].DefaultCellStyle; // also tried Clone() 
style.Padding = new Padding(0); 
deviceGrid.Columns["GProduction"].DefaultCellStyle = style; 

// third attempt 
DataGridViewColumn col = deviceGrid.Columns["Graph"]; 
DataGridViewImageCell icell = new DataGridViewImageCell(); 
icell.Style.Padding = new Padding(0); 
col.CellTemplate = icell; 

나는 의심 어쩌면 자체가 내가 열 설정하려고 기본 셀 스타일을 무시하지만, 그런 경우가 있다면, 제가이 문제를 방지하려면 어떻게해야 않는 DataGridView에에서 DefaultCellStyle 패딩?

해결책 :
후 다음 jmh_gr에 의해 그래서 나는 DGV 속성에서 패딩을 제거하고, 적용했다 내가 문제가있는 DataGridView 자체에 대한 DefaultCellStyle가 셀의 최근 상속되는 것을 알았다 제공 나는 패딩을 원하지 않는 모든 칼럼에.

+1

과 함께 약간의 품질 시간을 보내 DataGridView에 헤더 셀에 패딩을 추가하는 방법이다 [윈도우에서 셀 스타일 Forms DataGridView 컨트롤 (http://msdn.microsoft.com/en-us/library/1yef90x0.aspx), 스타일 상속을 자세히 설명합니다. 모든 코드와 GUI 세트 스타일을 보지 않고 스타일 스택이 무엇인지 정확히 아는 것은 어렵습니다. –

+0

@jmh_gr DGV DefaultCellStyle LAST에서 스타일을 상속 받았다는 사실을 지적 해 주셔서 감사합니다. 패딩을 설정하는 곳이므로 열 또는 셀 자체에 설정된 0 값을 재정의합니다. 해결 방법은 패딩이 필요한 셀에 5px 패딩을 적용하고 기본 스타일에 패딩을 0 개 남겨 두는 것입니다. – drew010

+0

[해결]을 제목에 넣고 질문을 편집하는 대신 해답을 답변으로 게시하십시오. 며칠 후에 다시 돌아와 받아 들일 수 있습니다. –

답변

2

jmh_gr이 제공 한 link을 따른 후 DataGridView 자체의 DefaultCellStyle이 마지막으로 셀에 상속된다는 문제가 있음을 발견했습니다.

해결 방법은 DGV 속성에서 패딩을 제거하고 패딩을 원하지 않는 모든 열에 적용하는 것입니다. 여기

0

우리가

 dgv.Columns("col1").HeaderCell.Style.Padding = New Padding(0, 5, 0, 0) 
     dgv.Columns("col2").HeaderCell.Style.Padding = New Padding(0, 5, 0, 0) 

이 코드는 생성자에 추가해야합니다 또는 OnLoad(...)