J'ai une vue en grille où je peux sélectionner plusieurs lignes en appuyant sur une touche de contrôle. Est-il possible de réaliser la même chose sans appuyer sur une touche de contrôle.Sélectionnez plusieurs lignes sans appuyer sur la touche de commande
Répondre
Comme l'action par défaut .net mettra également à jour le slectedrows
de votre datagridview
vous devez avoir un tableau pour réserver les anciennes sélections:
DataGridViewRow[] old;
qui sera mis à jour à CellMouseDown
(avant la valeur par défaut action .net modifier vos sélections):
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
old = new DataGridViewRow[dataGridView1.SelectedRows.Count];
dataGridView1.SelectedRows.CopyTo(old,0);
}
après cela, vous pouvez faire vos changements dans RowHeaderMouseClick
(comme RowHeaderSelect
est la valeur par défaut datagridview selectionmode
) ou utiliser CellMouseClick
pour FullRowSelect
et resélectionner ces vieilles lignes sélectionnées:
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
foreach (DataGridViewRow gr in old)
{
if (gr == dataGridView1.CurrentRow)
{
gr.Selected = false;
}
else
{
gr.Selected = true;
}
}
}
Edit: Une meilleure solution:
Vous devez implémenter votre propre datagridview
dérivé de l'original et de passer outre OnCellMouseDown
& OnCellMouseClick
pour annuler la l'option par défaut désélectionne l'action et la rend lisse. faire une nouvelle classe comme quelque chose comme ceci:
Using System;
Using System.Windows.Forms;
public class myDataGridView:DataGridView
{
protected override void OnCellMouseDown(DataGridViewCellMouseEventArgs e)
{
//base.OnCellMouseDown(e);
this.Rows[e.RowIndex].Selected = !this.Rows[e.RowIndex].Selected;
}
protected override void OnCellMouseClick(DataGridViewCellMouseEventArgs e)
{
//base.OnCellMouseClick(e);
}
}
et dans votre Form.Designer.cs changer DataGridView
objet datagridview1
(si tel est le nom) à myDataGridView
objet ......
Par exemple : Changement
private System.Windows.Forms.DataGridView dataGridView1;
à
private myDataGridView dataGridView1;
et changer
this.dataGridView1=new System.Windows.Forms.DataGridView()
à
this.dataGridView1=new myDataGridView()
Vous devez vous abonner à l'événement de clic de souris et sélectionner la ligne par programmation en définissant la propriété Selected sur true. Gardez à l'esprit que si la ligne est déjà sélectionnée, vous devez la définir sur false afin que l'utilisateur puisse désélectionner la ligne.
Je ne l'ai jamais fait, mais il devrait être possible d'utiliser les événements MouseDown et MouseUp pour sélectionner les lignes qui se trouvent sous le curseur lorsque vous déplacez la souris tout en maintenant l'un des boutons enfoncé.
La façon la plus simple à mettre peut être une case à cocher dans chaque ligne et, éventuellement, une case à cocher « Sélectionner tout » sur l'en-tête.
Je devais faire cela pour un écran tactile où je voulais multiselect en un seul clic, sans cases à cocher moche. Pourquoi trop compliquer, juste garder un pas des Index'es
private List<int> SelectedIndexs { get; set; }
Puis ajouter ou les retirer de la liste que vous cliquez dessus ... Ensuite, regardez à travers vous DataGrid et sélectionnez les lignes dans la liste .
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (SelectedIndexs.Contains(e.RowIndex))
{
SelectedIndexs.Remove(e.RowIndex);
}
else
{
SelectedIndexs.Add(e.RowIndex);
}
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
row.Selected = SelectedIndexs.Contains(row.Index);
}
}
- 1. Activer Intellisense IPhone sans appuyer sur la touche Echap
- 2. .NET 3.5 GridView - Sélectionnez plusieurs lignes avec la touche Ctrl appuyez sur
- 3. obtenir la valeur appuyer sur la touche
- 4. appuyer sur la touche ALT dans CMainFrame
- 5. Comment sélectionner plusieurs éléments sans appuyer sur la touche Ctrl dans QGraphicsScene? Dans
- 6. nouveau nœud sur appuyer sur la touche dans TreeView
- 7. Simuler la touche de tabulation Appuyer sur iOS SDK
- 8. Émulation « supprimer »-appuyer sur la touche de menu contextuel
- 9. Désactiver soumettre à l'événement appuyer sur la touche
- 10. événement Capture appuyer sur la touche à l'aide NSNotificationCenter
- 11. Sélectionnez UIButton sans plusieurs images
- 12. J'ai un masque d'éditeur en flash qui affiche son mouvement sans appuyer sur la touche entrée
- 13. get modifierFlags dans l'événement keyDown sans appuyer sur la touche non-modifiable avec elle!
- 14. MarkItUp! actualisation de l'aperçu continu sans appuyer sur Entrée
- 15. Déclencher la touche HAUT dans la ligne de commande?
- 16. raw_input en python sans appuyer sur enter
- 17. Utilisation de macros sans la touche d'échappement
- 18. sélectionnez plusieurs lignes gridview avec Ctrl + clic?
- 19. Sélectionnez distinct + sélectionnez haut pour fusionner plusieurs lignes
- 20. Emacs retour à la ligne de code indenté quand je suis touche de retour 'appuyer sur
- 21. Activation de la touche de raccourci WPF sans modificateur
- 22. appuyez sur le clavier sans appuyer sur le matériel
- 23. Plusieurs lignes pour la commande d'insertion - Problème Apostrophe
- 24. Sélectionnez la même option plusieurs fois/onchange sans changer
- 25. % VIM touche Commande
- 26. Comment appuyer sur une touche et la relâcher en utilisant C#?
- 27. Sélection de lignes gridview à l'aide de la touche ctrl
- 28. Ctrl-Espace dans Eclipse sans appuyer sur Ctrl-Espace
- 29. plusieurs tables Mysql sélectionnez
- 30. Augmenter le nombre une fois par clic de souris/touche appuyer sur XNA
Si vous sélectionnez plusieurs lignes sans clé de contrôle, comment les désélectionnerez-vous? – Giorgi
@Giorgi en cliquant à nouveau sur une ligne – Bolu