2011-08-24 53 views
25

當鼠標懸停在該特定行的項目上時,如何爲datagridview中的每個項目顯示datagridview的提示?當鼠標懸停在該行上時,如何在datagridview行中顯示每個項目的工具提示

我有表product的列:

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

我有一個要求,即我有列datagridview,我從數據庫中獲取這些:

product name 
product price 
product image .... 

現在我想展示工具提示是這樣的:如果我將鼠標放在產品圖像上,產品說明將顯示在該產品上。我想爲每一行都做到這一點。有人會請這個幫忙嗎?

回答

36

DataGridViewCell.ToolTipText property看一看,使用DataGridView中的CellFormatting事件來設置該屬性值。您可以使用事件的DataGridViewCellFormattingEventArgsColumnIndex屬性來確定事件是否觸發了要設置工具提示的列,如果是,請使用事件的RowIndex來指定該工具提示的值。

MSDN文章我掛有使用的一個很好的例子中的示例,但您的代碼可能是這個樣子:

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(); 
    } 
} 

其中:
nameOrIndexOfYourImageColumn =列名或圖片的索引值列 nameOrIndexOfYourDescriptionColumn =列名或索引值與您的描述數據。

注意:您需要某種方式來檢索行的描述數據。執行此操作的常用方法是在DataGridView中爲其添加一列,但由於您不想顯示此列,因此將其Visible屬性設置爲false。還有其他選擇。

+0

很多謝謝..現在工作....... –

3

我已經完成了這項工作,通過在每個DataGridViewCellTag屬性中的每個單元格的工具提示中存儲文本來顯示。

然後在DataGridView.CellMouseEnter事件時,可以看到在該小區中的鼠標是使用DataGridViewCellEventArgs.ColumnIndexDataGridViewCellEventArgs.RowIndex值,並從如使用ToolTip.SetToolTip工具提示文本對應的小區設置文本。

如果工作得很好。

事情是這樣的:

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

你會請詳細說明一些示例代碼....這將幫助我很多.. –

3

填寫datagridview時,只需將單元格的TooltipText屬性設置爲要顯示的文本。

相關問題