Toon posts:

c# button action in een windows grid

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik ben een windows applicatie aan het maken.
In een form heb ik een grid afgedrukt welke verschillende kolommen bevat.
Nu heb ik daar ook een button verwijderen aangemaakt.
Wat ik nu niet voor elkaar krijg is een actie te hangen op het moment dat erop die button is geklikt.

Ik heb nu op een mouse click wel iets afgevangen omdat ik dacht dat ik via getttype of sender moest achterhalen welke button maar blijkbaar gaat dat niet werken omdat er altijd system.windows.forms.datagridveiw uitkomt.

code die ik nu heb is dus niet goed, maar is het volgende:

code:
1
2
3
4
        private void dgNews_MouseClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show(sender.GetType().ToString());
        }


waar doe ik iets fout of is het niet echt mogelijk wat ik wil?

  • Aloys
  • Registratie: Juni 2005
  • Niet online
kan je ook het stukje code posten waar je deze functie aanroept?

Verwijderd

Topicstarter
daar is geen stukje code voor, dat is gewoon wanneer ik eenmaal klik op een rij in mijn datagridview.

Vandaar ook dat ik zeg dit kan nooit goed zijn, maar ik had gehoopt dat ik kon achterhalen waarop ik geklikt had en zo de button vinden en de juiste actie achterhalen.

Maar volgens mij moet er een simpelere manier zijn.

Verwijderd

Topicstarter
hmm ik heb al iets gevonden, maar toch denk ik niet dat het juist is maar ik kan er wel mee uit de voeten

code:
1
2
3
4
5
6
        private void dgNews_MouseClick(object sender, MouseEventArgs e)
        {
            DataGridView dg = (DataGridView)sender;
            MessageBox.Show(dg.CurrentCell.Value.ToString());
            
        }


via de currentcell value kan ik de tekst ophalen en als die Verwijderen is dan voer ik een actie uit.

Het werkt dus zoals ik het dacht te gaan doen, maar nogmaals volgens mij is het met een redelijke omweg, maar ik kan er eventjes mee door.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Da's logisch, want je hebt een handler voor de OnClick event van je datagrid. Je klikt dus op je DataGrid, vandaar dat sender die datagrid is.

Als je in de MSDN zoekt op DataGridViewButtonColumn, dan zie je daar staan dat je de CellContentClick event van je DataGridView moet gebruiken om de click events van je DataGridViewButtonColumn op te vangen.
Bv:
code:
1
2
3
4
5
6
7
void dataGridView1_CellContentClick( object sender, DataGridViewCellEventArgs e )
{
    if( e.ColumnIndex == 0 )
    {
        MessageBox.Show ("button clicked.");
    }
}

Het probleem/nadeel hier is nu natuurlijk wel dat je moet checken op de ColumnIndex. Maw, je moet de positie weten van die button binnen je column-collectie. In bovenstaand voorbeeld is die Button dus de eerste column binnen m'n datagridview.

https://fgheysels.github.io/