[C#] Combobox old value

Pagina: 1
Acties:

Verwijderd

Topicstarter
In mijn code voeg ik een aantal combo boxen toe aan een datagrid.(In iedere row één combo box) Vervolgens wil ik, zodra de gebruiker een ander item selecteert, zowel de oude als de nieuw items/waarde achterhalen. Dmv selectedindexchanged kan ik de nieuwe waarde achterhalen. Maar hoe haal je op een goede manier de oude items op?

Momenteel heb ik de combo box class iets uitgebreidt... en dit werkt goed. Alleen twijfel ik er aan of dit wel de meest mooie en optimale code is :-). Het textupdate event werkt niet, deze gaf altijd een leeg object terug.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public delegate void BeforeUpdate(object oldValue);
 
public class MyComboBox : ComboBox
  {
    public event BeforeUpdate BeforeUpdateEvent;
    private object OldItem;

    public MyComboBox()
    {
      this.DropDownStyle = ComboBoxStyle.DropDownList;
      this.SelectedIndexChanged += new EventHandler(MyComboBox_SelectedIndexChanged);
    }

    void MyComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
      BeforeUpdateEvent(OldItem);
 
      ComboBox cb = (ComboBox)sender;
      OldItem = SelectedItem;
    }
  }


Maw: zouden jullie bovenstaande code gebruiken of bestaan er mooiere oplossingen?

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Ik denk dat je beter kunt kijken naar de CellBeginEdit en CellEndEdit events van de DataGridView. Je zou zoiets kunnen doen dan:
C#:
1
2
3
4
5
6
7
8
private void dataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
    // Huidige (dus oude!) waarde ergens opslaan
}
private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventHandler e)
{
    // Doe iets met oude waarde en de nu geselecteerde waarde
}

Eventueel zou je zelfs het CellValidating event nog kunnen gebruiken.

Nu met Land Rover Series 3 en Defender 90