2012-02-14 16 views
7

Tôi có một DataGridView trong ứng dụng C# của mình. Sử dụng nhà thiết kế, tôi đã đặt một số AlternatingRowsDefaultCellStyle cũng như các thuộc tính DefaultCellStyle trên chính DGV. Cả hai kiểu này đều có giá trị padding là 0, 0, 5, 0. Tôi chưa đặt bất kỳ kiểu tùy chỉnh nào cho bất kỳ cột DGV nào từ trình đơn Edit Columns trong bổ trợ TaskGridView Tasks.Thay đổi đệm cho tất cả các ô trong một cột DataGridView duy nhất

Có một cột trong DGV là cột hình ảnh mà tôi vẽ một biểu đồ nhỏ cho mỗi hàng. Tôi muốn loại bỏ các padding từ tất cả các ô trong cột này để không có padding được áp dụng cho các tế bào mà để lại một số khoảng trắng ở cuối của đồ thị.

Mỗi điều sau đây tôi đã thử không loại bỏ phần đệm khỏi bất kỳ ô nào trong cột, nhưng cũng không loại bỏ bất kỳ ngoại lệ nào.

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

tôi nghi ngờ rằng có lẽ các DefaultCellStyle đệm khỏi DataGridView chính nó là trọng phong cách di động mặc định tôi đang cố gắng để thiết lập cho cột, nhưng nếu đó là trường hợp, những gì tôi cần phải làm gì để ngăn chặn điều này?

SOLUTION:
Sau khi làm theo các cung cấp bởi jmh_gr tôi thấy vấn đề là các DefaultCellStyle cho DataGridView tự nó được thừa hưởng LAST trên di động vì vậy tôi đã phải loại bỏ các đệm từ tài sản DGV, và áp dụng nó cho tất cả các cột ngoại trừ cột tôi không muốn đệm.

+1

Dành thời gian chất lượng với [Cell Styles trong Windows Forms DataGridView Control] (http://msdn.microsoft.com/en-us/library/1yef90x0.aspx), chi tiết kế thừa kiểu dáng. Thật khó để biết chính xác ngăn xếp kiểu là gì mà không thấy tất cả các kiểu mã và kiểu GUI. –

+0

@jmh_gr Cảm ơn bạn đã chỉ ra rằng, bây giờ tôi thấy nó kế thừa phong cách từ DGV DefaultCellStyle LAST vì đó là nơi tôi đặt padding, nó ghi đè giá trị 0 tôi đặt trên cột hoặc chính ô đó. Tôi tin rằng giải pháp là áp dụng đệm 5px cho các ô cần đệm và để 0 đệm trong các kiểu mặc định. – drew010

+0

Thay vì đặt [đã giải quyết] trong tiêu đề và chỉnh sửa câu hỏi, hãy đăng giải pháp của bạn làm câu trả lời. Trong một vài ngày, bạn có thể quay lại và đánh dấu nó là đã được chấp nhận. –

Trả lời

2

Sau khi theo dõi link do jmh_gr cung cấp, tôi phát hiện thấy vấn đề là DefaultCellStyle cho chính DataGridView được thừa hưởng LAST trên ô.

Giải pháp là xóa phần đệm khỏi thuộc tính DGV và áp dụng nó cho tất cả các cột ngoại trừ cột tôi không muốn đệm.

0

Đây là cách chúng ta có thể thêm đệm vào DataGridView Tiêu đề di động

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

mã này phải được bổ sung trong Constructor hoặc OnLoad(...)