selectedrows net event current columns c# winforms datagridview selection rows

c# - net - Deselecciona todas las filas en datagridview



selectedrows datagridview c# (9)

Tengo dos vistas de datos, y cuando hago clic en uno de ellos, me gustaría anular la selección de toda la selección en la segunda vista de datos, intenté esto, pero nada funciona:

firstItemsDataGridView.ClearSelection(); firstItemsDataGridView.CurrentCell = null;

no funciona,

firstItemsDataGridView.ClearSelection(); if (firstItemsDataGridView.Rows.Count > 0) firstItemsDataGridView[1, 0].Selected = true; firstItemsDataGridView.CurrentCell = null; firstItemsDataGridView.ClearSelection(); foreach (DataGridViewRow item in firstItemsDataGridView.Rows) { item.Selected = false; foreach (DataGridViewCell itemCell in firstItemsDataGridView.Columns) { itemCell.Selected = false; } }

no funciona,

firstItemsDataGridView.Rows[0,-1].Selected = true;

no funciona demasiado

He establecido el modo de selección en la selección de fila completa, y no tengo idea de cómo lograr mi objetivo.
¡muchas gracias!


Asegúrese de que todas las filas estén deseleccionadas (dataGridView.Rows [...]. Seleccionado = falso)

La fila cero está seleccionada por defecto, así que configure dataGridView.Rows [0] .Selected = false al abrir DataGridView y siempre que las otras opciones estén configuradas para que el usuario no pueda seleccionar, no tendrá, y mantendrá, nada seleccionado.


Como dijo @Taw en los subcomentarios para la respuesta principal: "¡No lo llames demasiado pronto!" .

En mi caso el comportamiento por defecto no funciona en absoluto. Mi caso - datagrid en la pestaña de control de pestañas y no funcionó si esa pestaña no se muestra antes!

Ese truco funciona a la perfección:

AnyTabControl.SelectedTab = FirsTab; gridModules.ClearSelection(); //placed at first tab AnyTabControl.SelectedTab = SecondTab; //that tab i would like to show first

Como resultado: la segunda pestaña se muestra al usuario y cuando hace clic en la primera selección, no aparecerá.


Dado que no hay respuesta, utilicé esta respuesta en otras publicaciones y me encontré con el mismo problema de la primera fila que se seleccionó y no fue posible deseleccionar:

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 de ver que se selecciona una fila es mediante la primera columna (no la columna [0], sino la única). Cuando haga clic en otra fila, ya no verá la selección azul, solo la flecha indica qué fila ha seleccionado.

SOLUCIÓN:

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

Por defecto, mi vista de datos fue el objeto con la primera pestaña en el formulario de Windows. Hacer que la pestaña se detenga primero en otro objeto (tal vez deshabilitar tabstop para el datagrid funcionará) desactivada seleccionando la primera fila


Intenté esto y está funcionando para mí:

for (int i = 0; i < dataGridView1.Rows.Count;i++) { dataGridView1.Rows[i].Selected = false; }


Si usa WPF y desea mantener un patrón de diseño de MVVM, puede enlazar ambos elementos seleccionados a la misma propiedad, de modo que cuando seleccione uno, el otro se deseleccionará automáticamente.

prueba algo como esto

public class SingletonClass { private static SingletonClass _Instance; public static SingletonClass Instance { get { if (_Instance == null) _Instance = new SingletonClass(); return _Instance; } } // End Property Instance private object _SelectedItem; public object SelectedItem { get { return _SelectedItem; } set { _SelectedItem = value; } } // End Selected Item } <DataGrid Name="Datagrid1" SelectedItem="{Binding Source={x:Static Const:SingletonClass.Instance},Path=SelectedItem,IsAsync=True}"> <DataGrid Name="Datagrid2" SelectedItem="{Binding Source={x:Static Const:SingletonClass.Instance},Path=SelectedItem,IsAsync=True}">

* Solo usé una clase singleton porque esto funcionará en diferentes vistas en diferentes instancias, puedes usar una clase regular si estás en la misma vista.

Tenga en cuenta que IsAsync = Verdadero en el xmal, si planea usar una clase singleton en diferentes vistas, no funcionará sin ella.


Solo usa:

dgvName.ClearSelection ();



// no selection in dgv at the begening dgv.FirstDisplayedCell = null; dgv.ClearSelection(); // try this it is working !


dataGridView1.ClearSelection();

Deberia trabajar. ¿Tal vez tienes un código que selecciona automáticamente las filas que se activan?