2012-03-21 32 views
5

Tôi có một DataGridView mà tôi sử dụng trong một dự án C# Winforms. Lưới không tự động tạo cột. Tôi đã đặt tên cột và thuộc tính theo cách thủ công.DataGridView Cell Alignment sẽ không hoạt động

Điều này bao gồm DefaultCellStyle cho các ô. Tôi muốn tất cả các ô có kiểu DataGridViewCheckBoxColumn được căn giữa. Tôi đã đặt thủ công liên kết này cho từng cột thuộc loại này trong trình thiết kế. Những thay đổi này không hiển thị khi tải datagridview.

Là phương pháp tiếp theo của tôi, tôi đã sử dụng mã dưới đây trong trường hợp DataBindingComplete (mà cũng không có hiệu lực thi hành)

foreach (DataGridViewColumn dgvc in this.dgv_Automations.Columns) 
{ 
    if(dgvc.CellType == typeof(DataGridViewCheckBoxCell)) 
     dgvc.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 
} 

Khi gỡ lỗi, các mã trên đã có sự liên kết thiết lập trung tâm. Tuy nhiên, nó vẫn không hiển thị trên lưới.

tôi THỂ làm cho nó làm việc nếu trong trường hợp DataBindingComplete tôi làm điều gì đó như thế này:

foreach (DataGridViewRow dgvr in this.dgv_Automations.Rows) 
{ 
    dgvr.Cells["isErrors"].Style.Alignment = DataGridViewContentAlignment.MiddleCenter; 
} 

Tuy nhiên, tôi có rất nhiều các cột và nó thực sự không có ý nghĩa để làm điều đó theo cách này . EDIT: Tôi đã thực hiện nó theo cách này và chỉ với khoảng 10 hàng có độ trễ rất đáng chú ý từ thiết lập tài sản này trên mỗi tế bào.

Câu hỏi của tôi là: cách thích hợp để thực hiện việc này là gì? Tại sao nhà thiết kế DefaultCellStyle không hoạt động?

+0

Vui lòng không thêm tiền tố vào tiêu đề của bạn bằng "C#". Đó là những gì các thẻ cho. –

+0

Lưu ý. Sẽ không trong tương lai. – ImGreg

Trả lời

7

Theo MSDN các DefaultCellStyle của một DataGridViewColumn được ghi đè bởi các phong cách xác định thông qua các DataGridView.RowsDefaultCellStyle, DataGridView.AlternatingRowsDefaultCellStyle, DataGridViewRow.DefaultCellStyle, và DataGridViewCell.Style tài sản.
Vì vậy, nó possibile rằng một trong những phong cách được thiết lập để một giá trị không phù hợp với sự liên kết cần thiết của bạn (ví dụ DataGridViewContentAlignment.NotSet hoặc DataGridViewContentAlignment.TopLeft)

0

Một hữu ích hơn liên kết cho DefaultCellStyling và cách thức kế thừa hoạt động.

http://msdn.microsoft.com/en-us/library/1yef90x0.aspx

Hóa ra tôi đã thiết lập một DefaultRowStyle được trọng DefaultCellStyle. Hãy chắc chắn rằng bạn kiểm tra tất cả các Styles !!

Các vấn đề liên quan