2011-08-24 14 views
25

¿Cómo puede mostrar la sugerencia de herramienta para datagridview para cada elemento en datagridview al pasar el mouse sobre el elemento en esa fila en particular?Muestra la información sobre herramientas para cada elemento en la fila datagridview cuando el mouse está sobre ella

tengo tabla product con columnas:

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

tengo un requisito que tengo un datagridview con columnas y yo estoy recibiendo estos de base de datos:

product name 
product price 
product image .... 

Ahora quiero mostrar la información sobre herramientas como esta: si tengo el mouse sobre la imagen del producto, se mostrará la descripción del producto para ese producto. Quiero hacer esto para cada fila. ¿Alguien podría ayudar en esto?

Respuesta

36

Tome un vistazo a la DataGridViewCell.ToolTipText property y utilizar el evento de DataGridView CellFormatting para establecer este valor de la propiedad. Puede usar la propiedad DataGridViewCellFormattingEventArgs del DataGridViewCellFormattingEventArgs del ColumnIndex del evento para determinar si el evento está activando para la columna para la que desea establecer una sugerencia de herramienta y, de ser así, use RowIndex del evento para especificar el valor de la punta de la herramienta.

La muestra en el artículo de MSDN I ligado tener un buen ejemplo del uso, pero su código podría ser algo como esto:

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

Dónde:
nameOrIndexOfYourImageColumn = el nombre de columna o valor de índice de la imagen columna nameOrIndexOfYourDescriptionColumn = el nombre de la columna o el valor del índice con sus datos de descripción.

Nota: que necesitará alguna forma de recuperar los datos de Descripción de una fila. Una forma común de hacer esto es tener una columna en su DataGridView, pero debido a que no desea mostrar esta columna, establezca su propiedad Visible en false. Sin embargo, hay otras opciones.

+0

muchas gracias ... ahora funciona ....... –

3

He hecho esto almacenando el texto para mostrar en la información sobre herramientas para cada celda en la propiedad Tag de cada DataGridViewCell.

Luego, en el caso de DataGridView.CellMouseEnter se puede ver en el cual las células del ratón está usando los DataGridViewCellEventArgs.ColumnIndex y DataGridViewCellEventArgs.RowIndex valores y establecer el texto de la celda correspondiente según el texto de sugerencia usando ToolTip.SetToolTip.

Si funciona bastante bien.

Algo como esto:

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

¿Podría usted elaborar con un código de muestra ... que me ayude mucho ... –

3

Cuando rellene el datagridview, simplemente configure la propiedad TooltipText de la celda con el texto que desea visualizar.

Cuestiones relacionadas