[C#] Event handlers

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
Ik voeg een aantal textboxes toe aan een tablelayout door middel van een for-loop.

Nu is het nodig voor mij om bij een Enter event handler een property in me UI te veranderen. Deze property geeft aan welk textbox als laatste gefocust is en mijn touchscreen numpad voegt dan de waardes toe aan die textbox. Mijn vraag is, hoe kan ik hetzelfde doen bij dynamisch toegevoegde textboxes?

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private int boxFlag { get; set; }

for (int i = 0; i < qcc.getFoos(s).Count; i++) {
                    AddDefectTable.ColumnCount = AddDefectTable.ColumnCount + 1;
                    AddDefectTable.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 75));
                    AddDefectTable.Width = AddDefectTable.Width + 85;

                    var foo= qcc.getFoos(s)[i];
                    Label lbl_foo = new Label();
                    TextBox text = new NumericUpDown();
                    if (i < 3) {
                        lbl_foo .Text = foo.FooName;
                        AddDefectTable.Controls.Add(lbl_foo , AddDefectTable.ColumnCount - 1, 0);
                        list.RemoveAt(i);
                    } else {
                        ComboBox cb_foo= new ComboBox();
                        cb_foo.DataSource = list;
                        cb_foo.DisplayMember = "defectName";
                        AddDefectTable.Controls.Add(cb_AdminDefect, AddDefectTable.ColumnCount - 1, 0);
                    }


                    AddDefectTable.Controls.Add(num, AddDefectTable.ColumnCount - 1, 1);
                }


En een voorbeeld van de handler is.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void textbox6_Enter(object sender, EventArgs e)
        {
            boxFlag = 1;
        }

private void NumPanel(int i)
        {
            switch (boxFlag)
            {
                case 1:
                    textBox6.Text = textBox6.Text + i;
                    break;
             }
         }

Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 10:08
Eerste hit op Google op "C# events dynamic control" kwam uit op het volgende op Stackoverflow :
http://stackoverflow.com/...ontrols-added-dynamically

Dit lijkt een vrij makkelijke manier te zijn.

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 12-10 23:30
Als het je gaat om welke control de focus heeft op het moment dat je NumPanel aanroept, zou ik de ActiveControl property van het form of Control.ContainsFocus gebruiken.
Iig als je het zo wilt doen zou ik direct een reference naar de textbox bewaren ipv jouw constructie want nu krijg je potentieel een grote switch als het aantal textboxen groeit.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
Killah_Priest schreef op maandag 16 november 2015 @ 12:04:
Eerste hit op Google op "C# events dynamic control" kwam uit op het volgende op Stackoverflow :
http://stackoverflow.com/...ontrols-added-dynamically

Dit lijkt een vrij makkelijke manier te zijn.
De event handlers heb ik ondertussen er in staan. Maar in tegenstelling tot de stackoverflow link die je stuurde, is het bij mij wel van toepassing welke textbox aangeroepen wordt omdat deze event handler, aan de hand van welke textbox het is, de boxflag moet aanpassen.

Het geen waar ik nu alleen tegen aan loop is dat wanneer ik de values van die dynamisch toegevoegde textboxen wil aanpassen in de NumPanel() methode, dit niet mogelijk is omdat deze nog niet aangemaakt zijn.
farlane schreef op maandag 16 november 2015 @ 12:15:
Als het je gaat om welke control de focus heeft op het moment dat je NumPanel aanroept, zou ik de ActiveControl property van het form of Control.ContainsFocus gebruiken.
Iig als je het zo wilt doen zou ik direct een reference naar de textbox bewaren ipv jouw constructie want nu krijg je potentieel een grote switch als het aantal textboxen groeit.
Net even getest, en zoals ik al dacht, is de ActiveControl de button van het NumPanel in plaats van de textbox.

Dit is de post die ik gebruikt heb: https://social.msdn.micro...mic-user-controls-textbox

[ Voor 9% gewijzigd door ThaAresX op 16-11-2015 12:38 ]


Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Altijd leuk: een vraag beantwoorden met een vraag:

Wat is "sender" in je Enter-eventhandler?

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
H!GHGuY schreef op maandag 16 november 2015 @ 12:38:
Altijd leuk: een vraag beantwoorden met een vraag:

Wat is "sender" in je Enter-eventhandler?
Een textbox.

Acties:
  • +1 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Begint het kwartje/de frank/de euro al te vallen?

Je slaat in je huidige eventhandler een getal op als referentie naar de textbox, maar eigenlijk krijg je al een referentie naar die textbox via sender...

Als hij nu niet valt... ;)

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
H!GHGuY schreef op maandag 16 november 2015 @ 12:56:
[...]


Begint het kwartje/de frank/de euro al te vallen?

Je slaat in je huidige eventhandler een getal op als referentie naar de textbox, maar eigenlijk krijg je al een referentie naar die textbox via sender...

Als hij nu niet valt... ;)
Heb je hem niet horen vallen? Hij viel best hard namelijk. Thanks!

Acties:
  • 0 Henk 'm!

  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 13:20

AlphaRomeo

FP PowerMod
Vergeet ook niet je eventhandlers er weer af te halen als je je controls opnieuw opbouwt anders heb je een potentieel memory leak in handen.

Acties:
  • 0 Henk 'm!

  • ThaAresX
  • Registratie: September 2010
  • Laatst online: 09-10 08:52
AlphaRomeo schreef op maandag 16 november 2015 @ 13:25:
Vergeet ook niet je eventhandlers er weer af te halen als je je controls opnieuw opbouwt anders heb je een potentieel memory leak in handen.
Ik heb dankzij H!GHGuY nu gewoon 1 event handler geschreven. De controls worden maar 1x opgebouwd/ingevoegd. Dus of ik snap je opmerking niet helemaal of het is niet van toepassing omdat ze maar 1x ingeladen worden.

Acties:
  • 0 Henk 'm!

  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 13:20

AlphaRomeo

FP PowerMod
Dus of ik snap je opmerking niet helemaal of het is niet van toepassing omdat ze maar 1x ingeladen worden.
Dat laatste inderdaad, als je ze maar één keer inlaad heb je geen probleem.
Pagina: 1