[C#] Controls van andere Forms aanspreken

Pagina: 1
Acties:

  • ÜberWicked
  • Registratie: Oktober 2004
  • Laatst online: 18:13
Ik heb 2 forms, en als ik nu in Form2 op een button klikt wil ik een textvak updaten in Form1.
De control staat als public, maar ik krijg met geen mogelijkheid rechtstreeks contact om vanuit form1 deze control aan te spreken, dus ik gebruik nu de volgende code:

Form1:
code:
1
2
3
4
5
6
7
Public Class Update
{
    Public Update(string Text)
    {
        txtText.text = Text;
    }
}


Form2:
code:
1
2
3
4
private void button2_Click(object sender, EventArgs e)
        {
            Update update1 = new Update("bladiebla");
        }


Hoe kan ik deze code optimaliseren? Dit lijkt mij een omweg?

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:55
Waarom wil je dat rechtstreeks doen ? Op de manier waarop je het doet, creeër je een afhankelijkheid tussen 2 forms, wil je dat wel ?
Je ene form moet de instantie van de andere kennen.

Imho doe je het beter met delegates.
Bv, in de form met het tekstvak, open je de form met de button op deze manier:
code:
1
2
3
frmButtonForm = new ButtonForm();
frmButtonForm.OnButtonClick += new EventHandler (OnButtonClick);
frmButtonForm.Show();

je Buttonform heeft dus een event OnButtonClick; je moet er dan wel voor zorgen dat die event geraised wordt natuurlijk als er op je knop geklikt wordt.
Zo bv
code:
1
2
3
4
5
6
// frmButtonForm code
private void Button1_Click(object sender, EventArgs e )
{
   if( OnButtonClick != null )
      OnButtonClick(this, EventArgs.Empty);
}


In je form met je tekstvak moet je er dan voor zorgen dat je de goede event-handler geschreven hebt:
code:
1
2
3
4
5
// frmTextVak
private void OnButtonClick( ... )
{
   myTextBox.Text = "blaat";
}

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
zo moeilijk is dat toch niet
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
25
public class Form1 : Form
{
    public Textbox textbox;

    public void ShowForm2()
    {
        Form2 form = new Form2( this );
        form.Show();
    }
}

public class Form2 : Form
{
    private Form1 form;

    public Form2( Form1 form )
    {
        this.form = form;
    }

    public void ButtonClick( object sender, Eventargs e )
    {
        form.textbox.Text = "Mijn Text";
    }
}


oftewel je moet gewoon zorgen dat je een refferentie naar je form hebt waar je wat aan wilt passen.

edit:

En verder natuurlijk ook wat whoami zegt

[ Voor 5% gewijzigd door Woy op 28-09-2006 11:48 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”