seleccionada propiedades obtener net metodos form fila eventos ejemplos control .net winforms datagridview

.net - propiedades - ¿Cómo anular la selección de todas las filas seleccionadas en un control DataGridView?



propiedades de datagridview (6)

Quisiera anular la selección de todas las filas seleccionadas en un control DataGridView cuando el usuario hace clic en una parte en blanco (sin fila) del control.
¿Cómo puedo hacer esto?


Conjunto

dgv.CurrentCell = null;

cuando el usuario hace clic en una parte en blanco del dgv.


En el uso de VB.net para el Sub:

Private Sub dgv_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgv.MouseUp '' deselezionare se click su vuoto If e.Button = MouseButtons.Left Then '' Check the HitTest information for this click location If Equals(dgv.HitTest(e.X, e.Y), DataGridView.HitTestInfo.Nowhere) Then dgv.ClearSelection() dgv.CurrentCell = Nothing End If End If End Sub


Gracias Cody aquí está el c # para ref:

if (e.Button == System.Windows.Forms.MouseButtons.Left) { DataGridView.HitTestInfo hit = dgv_track.HitTest(e.X, e.Y); if (hit.Type == DataGridViewHitTestType.None) { dgv_track.ClearSelection(); dgv_track.CurrentCell = null; } }


Para anular la selección de todas las filas y celdas en un DataGridView , puede usar el método ClearSelection :

myDataGridView.ClearSelection()

Si no desea que la primera fila / celda aparezca seleccionada, puede establecer la propiedad CurrentCell en Nothing / null , que ocultará temporalmente el rectángulo de foco hasta que el control reciba el foco nuevamente:

myDataGridView.CurrentCell = Nothing

Para determinar cuándo el usuario ha hecho clic en una parte en blanco de DataGridView , tendrá que manejar su evento MouseUp . En ese caso, puede HitTest la ubicación del clic y HitTestInfo.Nowhere esto indique HitTestInfo.Nowhere . Por ejemplo:

Private Sub myDataGridView_MouseUp(ByVal sender as Object, ByVal e as System.Windows.Forms.MouseEventArgs) ''''# See if the left mouse button was clicked If e.Button = MouseButtons.Left Then ''''# Check the HitTest information for this click location If myDataGridView.HitTest(e.X, e.Y) = DataGridView.HitTestInfo.Nowhere Then myDataGridView.ClearSelection() myDataGridView.CurrentCell = Nothing End If End If End Sub

Por supuesto, también podría crear una subclase del control DataGridView existente para combinar todas estas funcionalidades en un solo control personalizado. Tendrá que anular su método OnMouseUp similar al que se muestra arriba. También me gusta proporcionar un método público de DeselectAll para mayor comodidad que llama al método ClearSelection y establece la propiedad CurrentCell en Nothing .

(Las muestras de código están todas arbitrariamente en VB.NET porque la pregunta no especifica un lenguaje; disculpas si este no es su dialecto nativo).


descubrí por qué mi primera fila fue seleccionada por defecto y descubrí cómo no seleccionarla por defecto.

Por defecto, mi datagridview era el objeto con la primera pestaña-stop en mi formulario de Windows. Hacer que la pestaña se detenga primero en otro objeto (tal vez deshabilitar la función tabular para la cuadrícula de datos funcione) desactivada al seleccionar la primera fila


me encontré con el mismo problema y encontré una solución (no solo para mí, pero sí para internet)

Color blue = ColorTranslator.FromHtml("#CCFFFF"); Color red = ColorTranslator.FromHtml("#FFCCFF"); Color letters = Color.Black; foreach (DataGridViewRow r in datagridIncome.Rows) { if (r.Cells[5].Value.ToString().Contains("1")) { r.DefaultCellStyle.BackColor = blue; r.DefaultCellStyle.SelectionBackColor = blue; r.DefaultCellStyle.SelectionForeColor = letters; } else { r.DefaultCellStyle.BackColor = red; r.DefaultCellStyle.SelectionBackColor = red; r.DefaultCellStyle.SelectionForeColor = letters; } }

Este es un pequeño truco, la única forma en que puede ver una fila seleccionada es en la primera columna (no en la columna [0], sino en la primera). Al hacer clic en otra fila, ya no verá la selección azul, solo la flecha indica qué fila ha seleccionado. Como comprenderás, utilizo rowSelection en mi vista de cuadrícula.