Dans mes WinForms, j'ai DataGridView
. Je voulais sélectionner la ligne complète à la fois, j'ai donc défini SelectionMode
comme FullRowSelect
. Et maintenant j'ai un problème, car au début mon formulaire souligne la première ligne (l'ensemble des lignes sélectionnées est vide, la première ligne n'est pas sélectionnée mais juste soulignée). J'ai essayé beaucoup de choses, telles que:
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.ClearSelection();
}
Et tout a échoué, car en fait il n'y a pas de sélection.
Comment puis-je me débarrasser de ce soulignement?
Merci pour toute aide!
Malheureusement, aucune de ces réponses ne m'a aidé, mais j'ai trouvé une autre solution. Au lieu d'une sélection impossible, je vais juste le cacher avec ce morceau de code:
dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor;
dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor;
Donc, si quelqu'un veut simplement masquer la sélection, cela fonctionnera plutôt bien.
À votre santé :)
Cela fonctionne pour moi:
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.Rows[0].Selected = false;
}
Il suffit de mettre dataGridView1.ClearSelection();
dans l'événement de chargement du formulaire.
Vous devriez essayer de mettre dans l'événement montré datagridView.ClearCelection()
et aussi datagridView.CurrentCell=null
Et par exemple si vous voulez sélectionner une ligne pour supprimer ou changer des informations faites simplement if(datagridView.CurrentCell==null){ MessageBox.Show("You must select row");}
ça marche pour moi
Essayez ceci peut être utile
private void dgv_order_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
dgv_order.CurrentCell.Selected = false;
dgv_order.ClearSelection();
}
Vous pouvez appeler la méthode dataGridView.ClearSelection () dans l'événement form_Load comme ceci ...
private void Form1_Load(object sender, EventArgs e)
{
// You will get selectedCells count 1 here
DataGridViewSelectedCellCollection selectedCells = dataGridView.SelectedCells;
// Call clearSelection
dataGridView.ClearSelection();
// Now You will get selectedCells count 0 here
selectedCells = dataGridViewSchedule.SelectedCells;
}
Essayez de définir DataGridView.AllowUserToAddRows = false
Dans le constructeur après InitializeComponent()
.
Parfois, lorsque vous rechargez votre formulaire sans fermer votre programme, la première ligne est mise en surbrillance. Mais il ne sera pas sélectionné et vous obtiendrez -1 pour l'index de ligne sélectionné.
Vous pouvez le faire comme ceci:
1. Stockez les styles par défaut lors du chargement du formulaire:
Public Class aRoots
Dim df1, df2, df3, df4 As Color
Private Sub aRoots_Load(sender As Object, e As EventArgs) Handles Me.Load
df1 = DGV_Root.DefaultCellStyle.SelectionBackColor
df2 = DGV_Root.DefaultCellStyle.BackColor
df3 = DGV_Root.DefaultCellStyle.SelectionForeColor
df4 = DGV_Root.DefaultCellStyle.ForeColor
2. Modifiez les styles de cellule lors de l'interaction avec datagridview:
Private Sub LoadRoot()
For i = 0 To 5
DGV_Root.Rows.Add()
For j = 0 To 3
DGV_Root.Item(j, i).Value = ...
Next
Next
'DGV_Root.ClearSelection() ==> instead of this use 2 lines below
DGV_Root.DefaultCellStyle.SelectionBackColor = df2
DGV_Root.DefaultCellStyle.SelectionForeColor = df4
End Sub
3. Modifiez les styles de cellule par défaut lorsque la sélection est modifiée comme cell_click ou cell_double click:
Private Sub DGV_Root_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DGV_Root.CellMouseClick
DGV_Root.DefaultCellStyle.SelectionBackColor = df1
DGV_Root.DefaultCellStyle.SelectionForeColor = df3
...
End Sub
4. restaurer tous les paramètres par défaut lorsque vous souhaitez fermer le formulaire:
Private Sub PbClose_Click(sender As Object, e As EventArgs) Handles PbClose.Click
BtnCancel.PerformClick()
DGV_Root.DefaultCellStyle.SelectionBackColor = df1
DGV_Root.DefaultCellStyle.BackColor = df2
DGV_Root.DefaultCellStyle.SelectionForeColor = df3
DGV_Root.DefaultCellStyle.ForeColor = df4
Me.Close()
End Sub
J'espère que cela vous aidera les gars.
L'événement à définir pour la ligne sélectionnée désactivée au démarrage est le suivant, et gère un FLAG pour arrêter ClearSelection
private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
if (FLAG==true)
{
dataGridView.ClearSelection();
FLAG=false;
}
}
Ce travail pour moi pour une sélection claire sur databind
Protected Sub GridCancel_DataBinding(sender As Object, e As EventArgs) Handles GridCancel.DataBinding
GridCancel.SelectedIndex = -1
End Sub
Si cela est dû au fait qu'il a déclenché l'événement GridView1_SelectionChanged indésirable lors du chargement initial, vous pouvez utiliser un indicateur pour gérer cela.
public partial class YourFormName
{
private bool IsReady= false;
private void YourFormName_Load(object sender, EventArgs e)
{
//Load your GridView1...
//Format your GridView1...
IsReady = true;
}
void GridView1_SelectionChanged(object sender, EventArgs e)
{
if (!IsReady)
return;
//do the rest of the stuffs
}
}