2011-08-24 35 views
25

Làm cách nào bạn có thể hiển thị chú giải công cụ cho datagridview cho mỗi mục trong datagridview khi bạn di chuột qua mục trong hàng cụ thể đó?Hiển thị đầu công cụ cho mỗi mục trong hàng datagridview khi chuột ở trên nó

Tôi có bảng product với các cột:

product name 
product price 
product description 
product image .... 

Tôi có một yêu cầu rằng tôi có một datagridview với các cột và tôi nhận được những từ cơ sở dữ liệu:

product name 
product price 
product image .... 

Bây giờ tôi muốn hiển thị chú giải công cụ như sau: nếu tôi có chuột qua hình ảnh sản phẩm, mô tả sản phẩm sẽ được hiển thị cho sản phẩm đó. Tôi muốn làm điều này cho mỗi hàng. Có ai vui lòng giúp đỡ về điều này?

Trả lời

36

Hãy nhìn vào các DataGridViewCell.ToolTipText property và sử dụng sự kiện CellFormatting của DataGridView để thiết lập giá trị tài sản này. Bạn có thể sử dụng thuộc tính DataGridViewCellFormattingEventArgsColumnIndex của sự kiện để xác định xem sự kiện có kích hoạt cho cột bạn muốn đặt mẹo công cụ hay không và nếu có, hãy sử dụng số RowIndex của sự kiện để chỉ định giá trị của công cụ đó.

Các mẫu trong bài viết MSDN tôi liên kết có một ví dụ tốt của việc sử dụng, nhưng mã của bạn có thể trông như thế này:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { 
    if (e.ColumnIndex == dataGridView1.Columns[nameOrIndexOfYourImageColumn].Index) { 
     var cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; 
     // Set the Cell's ToolTipText. In this case we're retrieving the value stored in 
     // another cell in the same row (see my note below). 
     cell.ToolTipText = dataGridView1.Rows[e.RowIndex].Cells[nameOrIndexOfYourDescriptionColumn].Value.ToString(); 
    } 
} 

đâu:
nameOrIndexOfYourImageColumn = tên cột hoặc giá trị chỉ số của hình ảnh của bạn cột nameOrIndexOfYourDescriptionColumn = tên cột hoặc giá trị chỉ mục với dữ liệu mô tả của bạn.

Lưu ý: bạn sẽ cần một số cách để truy xuất dữ liệu Mô tả của hàng. Một cách phổ biến để làm điều này là có một cột cho nó trong DataGridView của bạn, nhưng thực hiện vì bạn không muốn hiển thị cột này đặt thuộc tính Visible của nó thành false. Có những lựa chọn khác tuy nhiên.

+0

cảm ơn nhiều .. làm việc ngay bây giờ ....... –

3

Tôi đã thực hiện việc này bằng cách lưu trữ văn bản để hiển thị trong chú giải công cụ cho từng ô trong thuộc tính Tag của mỗi DataGridViewCell.

Sau đó, trong trường hợp DataGridView.CellMouseEnter bạn có thể thấy trong đó tế bào chuột đang sử dụng các giá trị DataGridViewCellEventArgs.ColumnIndexDataGridViewCellEventArgs.RowIndex và thiết lập các văn bản từ các tế bào tương ứng như văn bản tooltip sử dụng ToolTip.SetToolTip.

Nếu hoạt động khá tốt.

Something như thế này:

private void dgv_CellMouseEnter(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.ColumnIndex >= 0 & e.RowIndex >= 0) 
    { 
     ToolTip1.SetToolTip(dgv, Convert.ToString(dgv.Item(e.ColumnIndex, e.RowIndex).Tag)); 
    } 
} 
+0

bạn sẽ bắt đầu xây dựng với một số mã mẫu .... điều đó sẽ giúp tôi rất nhiều .. –

3

Khi điền datagridview, chỉ cần đặt thuộc tính TooltipText của ô thành văn bản bạn muốn hiển thị.

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