Biểu đồ là đối tượng ít khi được sử dụng, nhưng nó lại khá phức tạp. Do vậy mình tạo đề tài này để mọi người cùng trao đổi về Chart. Mong mọi người tham gia và đóng góp nhiệt tình để đề tài có thể tổng hợp được mọi kiến thức về Chart.
Mở đầu mình xin viết một chương trình nhỏ để mọi người có thể vẽ được một Chart đơn giản.
Giao diện chương trình:
Chương trình gồm 1 DataGridView và một Chart như sau
Hoạt động:
- Khi ta click chuột vào một dòng trong DataGridView thì biểu đồ sẽ thể hiện dạng cột đơn, tương ứng với số liệu của dòng đó.
- Khi ta chọn nhiều dòng cùng lúc thì biểu đồ sẽ thể hiện dạng cột kép, tương ứng với các dòng đã chọn.
Cài đặt DataGirdView:
- Đặt thuộc tính AllowUserAddRows là False => Không cho thêm dòng mới.
- Sử dụng thuộc tính Columns để thêm vào các cột với Header Text như trong hình. Mỗi cột có Width là 80.
- Đặt thuộc tính SelectionMode là FullRowSelect để khi ta chọn một ô thì nó sẽ bôi đen cả dòng.
- Đặt RowHeadersWidth là 100.
- Đặt dứ liệu mẫu cho nó trong thủ tục Form_Load như sau:
Mã:
private void Form1_Load(object sender, EventArgs e) { //Cài đặt dữ liệu mẫu cho dataGridView1 dataGridView1.Rows.Add(); dataGridView1.Rows[0].HeaderCell.Value = "Năm 2012"; dataGridView1.Rows[0].Cells[0].Value = 4; dataGridView1.Rows[0].Cells[1].Value = 8; dataGridView1.Rows[0].Cells[2].Value = 3; dataGridView1.Rows[0].Cells[3].Value = 4; dataGridView1.Rows[0].Cells[4].Value = 9; dataGridView1.Rows[0].Cells[5].Value = 5; dataGridView1.Rows.Add(); dataGridView1.Rows[1].HeaderCell.Value = "Năm 2013"; dataGridView1.Rows[1].Cells[0].Value = 8; dataGridView1.Rows[1].Cells[1].Value = 12; dataGridView1.Rows[1].Cells[2].Value = 3; dataGridView1.Rows[1].Cells[3].Value = 9; dataGridView1.Rows[1].Cells[4].Value = 7; dataGridView1.Rows[1].Cells[5].Value = 43; }
Ở đây tôi chỉ thêm có 2 dòng dữ liệu, bạn có thể thêm vài dòng nữa nếu bạn thích.
Vẽ biểu đồ khi chọn 1 hay nhiều dòng trong DataGridView:
Mã lệnh viết trong sự kiện MouseClick của DataGridView như sau:
Mã:
private void dataGridView1_MouseClick(object sender, MouseEventArgs e) { //Tìm và đặt giá trị MAX cho trục Y int max = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value); for (int i = 1; i < 6; i++) if (max < Convert.ToInt32(dataGridView1.CurrentRow.Cells[i].Value)) max = Convert.ToInt32(dataGridView1.CurrentRow.Cells[i].Value); if (chart1.ChartAreas[0].AxisY.Maximum < max) chart1.ChartAreas[0].AxisY.Maximum = max; chart1.Series.Clear(); for (int n = 0; n < dataGridView1.Rows.Count; n++) //Duyệt từ dòng đầu tiên đến dòng cuối cùng của dataGridView1 { if (dataGridView1.Rows[n].Selected) //Nếu dòng thứ n được chọn thì thêm series cho dòng đó { Series s = new Series(); for (int i = 0; i < 6; i++) { DataPoint p = new DataPoint(); p.XValue = i; p.SetValueY(Convert.ToDouble(dataGridView1.Rows[n].Cells[i].Value)); p.AxisLabel = "Tháng " + (i + 1).ToString(); s.Points.Add(p); } chart1.Series.Add(s); } }
Chạy thử chương trình:
Ok. Thế là xong, bây giờ bạn chạy thử chương trình.
- Ban đầu bạn chọn dòng 1, kết quả:
- Sau đó bạn chọn dòng 2:
- Tiếp theo bạn chọn cả 2 dòng bằng bằng chuột:
Bạn sẽ thấy biểu đồ thay đổi, để hiểu tại sao nó thay đổi như thế thì hãy coi kỹ mã lệnh nha.
Hy vọng chương trình nhỏ trên có ích cho nhiều bạn [IMG]images/smilies/online.gif[/IMG]!
View more random threads:
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...