quên nói cái này alf trong winform.
mấy anh cho em hỏi làm thế nào để đổi màu từng dòng trong datagrid,nhưng nó phỉa thực hiện như sau:
vi dụ: có 4 dòng a-b-c-d-e-f
yếu cầu : dòng a-c-e : màu vàng
dong b-d-f : màu xanh.
vậy phải làm cách nào vậy mấy anh??????
thanks mọi người trước
Sửa/Xóa bài viết
quên nói cái này alf trong winform.
Đổi màu trong dataGridview ko khó!Bạn chỉ cần xác định vị trí dòng muốn đổi màu thi sẽ làm được ngay.
Đây là đoạn code mình viết để đổi màu các cell tương ứng khi mình kéo chuột lựa chọn:
private void button2_Click(object sender, EventArgs e)
{
try
{
DataGridViewCellStyle style1 = new DataGridViewCellStyle();
style1.ForeColor = Color.Blue;
style1.BackColor = Color.Bisque;
for (int i = dataGridView1.SelectedRows.Count - 1; i >= 0; i--)
{
dataGridView1.SelectedRows[i].DefaultCellStyle=style1;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message+"\n"+ex.StackTrace);
}
}
Cậu xem cái này ha. Tớ cho các dòng trong DataGridView có màu xen kẽ giữa các dòng (dòng màu LightPink, dòng màu trắng)
Visual C# Code:
//Đoạn này tạm thời lấy dữ liệu đưa vào datagridview da.Fill(ds, "Customers"); dataGridView1.DataSource = ds.Tables["Customers"]; //Bắt đầu chia làm 2 màu trong các dòng style1.ForeColor = Color.Blue; style1.BackColor = Color.LightPink; //Màu LightPink cho dòng xen kẽ { }
Cậu tự chuyển dòng màu trắng thành màu bạn muốn với việc thêm một DataGridViewCellStyle ha.
Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 13-08-2008 lúc 11:24 AM.
Không biết ghi gì luôn ...
Tìm trong DataGridView cái sự kiện CellFormating hay gì đó tương tự (không nhớ rõ nữa), rồi thay đổi CellStyle nếu cần (chú ý nên tạo trước style object, tránh thay đổi trực tiếp vào style object của cell, vì như thế sẽ tạo ra một style object độc lập), chứ thay đổi theo cách của Forlorn_hope chí format theo index, không format được theo nội dung cell (người dùng có thể sắp xếp lại danh sánh => không thể biết trước index nào ứng với nội dung nào).
Sorry vì tớ không làm hoàn thiện hơn bài này giúp bạn.
Thanks zxc ha, đúng là chỉ cần bắt sự kiện CellFormatting của DataGridView là có thể tự động cập nhập theo đúng màu mè mà ta chuẩn bị sẵn.
Visual C# Code:
{ style1.ForeColor = Color.Blue; style1.BackColor = Color.LightPink; //Màu LightPink cho dòng xen kẽ { } }
Đến đây thì không biết có còn cách nào ngắn gọn hơn không nữa?
Không biết ghi gì luôn ...
1) Code trên không ổn: CellFormatting được gọi khi cần format cho mỗi Cell được hiển thị. Mỗi lần lại chạy vòng for như thế thì chít => sử dụng EventArgs để thay đổi format, không thay đổi trực tiếp trên DGV như vậy (số row trong DGV có thể rất nhiều, nhưng số row hiển thị trong một thời điểm thì không nhiều).
2) Style nên tạo ngoài event handler, tránh tạo ra object mỗi lần handle.
3) Nếu chỉ định thay đổi màu cho dòng chẵn dòng lẻ thì sử dụng 2 thuộc tính RowDefaultCellStyte và AlternatingRowsDefaultCellStyle.
4) Nếu cẩn format nhiều loại row (3 màu trở lên chăng hạn), ngoài cách dùng event CellFormatting có thể thử event RowPrePaint xem (cái này không chắng được không, nhớ sử dụng RowIndex trong các EventArgs).
Bạn ơi cho mìnhh hỏi, làm sao khi kích chuột chọn vào header của colum1 thì màu của datagrid đổi, còn kích vào các header của cột khác thì không? Giúp mình với