2009-08-31 40 views
6

Tôi có một số DataGridView được điền bằng cách đặt DataSource thành DataBinding.C# /. NET cách đánh dấu một số hàng nhất định trong DataGridView

Bây giờ tôi muốn có một số hàng trong DataGridView có Backgroundcolor khác nhau tùy theo một số giá trị trong hàng.

Làm cách nào để tôi có thể thực hiện việc này?

+0

Tôi nghĩ bạn có thể tìm thấy một số thông tin hữu ích từ câu hỏi này. http://stackoverflow.com/questions/1078782/c-iterate-over-datagridview-change-row-color – rahul

Trả lời

7

Có một ví dụ tuyệt vời here.

Khái niệm là bạn đăng ký các sự kiện từ lưới. Khi một ô được lấp đầy, một sự kiện được kích hoạt và dựa trên giá trị bạn có thể định dạng ô, vv.

1

Trong trình xử lý sự kiện CellFormatting của khung nhìn dữ liệu, bạn có thể đặt màu nền mặc định cho bất kỳ hàng nào bạn muốn.

private void MyDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     if (e.RowIndex == rowIndexToHighlight) 
     { 
      e.CellStyle.BackColor = Color.Green; 
     } 

    } 
+1

-1 vì ví dụ này có tác động hiệu suất thực sự kém. Nếu sử dụng databinding thì lưới dữ liệu sẽ cần phải duy trì các bản ghi hàng trùng lặp. Ví dụ của Psasik tránh các hàng không chia sẻ. – Kleinux

+0

@Kleinux: Đó là một nhận xét thú vị về việc duy trì các bản ghi hàng trùng lặp. Bạn có thể giải thích lý do tại sao điều này là như vậy? Cảm ơn – Andy

+1

Nếu bạn nhìn vào tài liệu, bạn sẽ có đề cập đến các hàng được chia sẻ và không được chia sẻ. Đoạn mã trên buộc khung nhìn lưới để tạo các bản ghi DataGridViewRow thực tế cho mỗi hàng trong nguồn dữ liệu của bạn. Các hàng này không trùng lặp theo ý nghĩa của các giá trị ô, nó vẫn có thể đọc nguồn dữ liệu cho điều đó, nhưng nếu không chúng sẽ không tồn tại vì thông tin kiểu dáng yêu cầu hiện tại. Hy vọng rằng tôi đã làm cho bình luận của tôi một chút rõ ràng hơn. Đây là một hướng dẫn tốt http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx – Kleinux

1

Bạn có thể sử dụng RowPrePaint để thay đổi màu sắc hay phong cách của toàn bộ hàng

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