Intercepter key dans un datagridviewcombo
Bonjour
Je seche sur un probleme de combo et datagridview
Dans un datagridview j'ai ajouté des ComBoBoxColumn
Si l'utilisateur a fait une selection dans le combo il ne peut plus remettre ce combo vide
Par contre je suppose que si je force le selectedindex a -1, ca ira
Le probleme est de pouvoir intercepter un key.delete ou escape sur la cellule concernée et je rame :oops:
des suggestions ?
Mercipour votre aide
Annuler la selection d'un DataGridViewComboBoxColumn
Cela semble marcher
Voici un exemple de code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| // ***********************************************************************************
// Il faut s'abonner a l'event EditingControlShowing
private void DgvKeys_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
// Il faut verifier la nature du control concerné (je traite les combobox)
// N.B. : Il y a certainement d'autres maniere plus élégantes de faire, j'en conviens
ComboBox cmb = e.Control as ComboBox;
if (cmb != null)
{
// On abonne l'event KeyUp du control concerné
cmb.KeyUp -= new KeyEventHandler(ItemKeyPress);
cmb.KeyUp += new KeyEventHandler(ItemKeyPress);
}
}
// ***********************************************************************************
// Ici on traite le KeyUp
private void ItemKeyPress(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Delete)
{
return;
}
// Si c'est un delete on annule la selection du combo
ComboBox combo = (ComboBox)sender;
combo.SelectedIndex = -1;
} |