Avatar billede smith1 Nybegynder
19. september 2006 - 21:31 Der er 13 kommentarer og
2 løsninger

Ændre tekstem på en knap fra en anden form

Hvordan kan jeg ændre teksten på min knap som er på form1? men den skal ændre fra form2 af!

button1.text = "Knappen er ændre fra form 2"
Avatar billede mcgoat Nybegynder
19. september 2006 - 21:46 #1
Application.Form1.button1.text = "noget";

noget i den stil vil jeg tro
Avatar billede smith1 Nybegynder
19. september 2006 - 21:54 #2
ser ikke ud til at virke
Avatar billede thesurfer Nybegynder
19. september 2006 - 23:34 #3
Du kunne oprette en reference til Form1, når du opretter Form2..

Jeg går ud fra, at du har noget der ligner:

Form2 f2 = new Form2()
f2.show();

Så skulle du gerne kunne gøre sådan her:

f2.show(this)

eller

f2.show(Form1)

Så har du en reference til Form1, på Form2.

Jeg har ikke testet det... men det burde virke.. vil jeg mene.. :)
Avatar billede thesurfer Nybegynder
19. september 2006 - 23:39 #4
Nu har jeg testet det..

Eksempel:


Form1:
            Form2 f2 = new Form2(this);
            f2.Show();

Form2:
    public partial class Form2 : Form
    {
        private Form frmForm1 = new Form();
        public Form2(Form f1)
        {
            InitializeComponent();
            frmForm1 = f1;
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            MessageBox.Show("Titlen på Form1 er: " + frmForm1.Text);
        }
}
Avatar billede thesurfer Nybegynder
19. september 2006 - 23:46 #5
Hmm.. Det er lidt tricky med kald til en event på Form1.. kigger lige på det..
Avatar billede thesurfer Nybegynder
20. september 2006 - 00:48 #6
Hmm... kan ikke hitte ud af det..
Avatar billede hmortensen Nybegynder
20. september 2006 - 10:46 #7
Du kan tilføje en egenskab til Form1, som du så kan bruge fra Form2 via. din reference.

Form1:

internal string ButtonText
{
  get { return this.button1.Text; }
  set { this.button1.Text = value; }
}

Form2 f2 = new Form2(this);
f2.Show(this);
eller
f2.ShowDialog(this);


Form2:
private Form1 frmForm1;

public Form2(Form1 f1)
{
  InitializeComponent();
  frmForm1 = f1;

  frmForm1.ButtonText = "Ny tekst til knap";
}


Har lavet det lidt anderledes end thesurfer. Jeg bruger en refernce til Form1, frem for Form, da den ekstra filføjede egenskab i Form1 ellers ikke findes.
Avatar billede smith1 Nybegynder
20. september 2006 - 17:48 #8
kan ikke få det til at virke.. for en fejl. noget med: "No overload. 0 metoede argument " noget i den stil



Form2 f2 = new Form2(this);
f2.Show(this);
Avatar billede hmortensen Nybegynder
20. september 2006 - 21:09 #9
Du skal rette Form2's constructoren, som vist i eksemplet, så den forventer inputtet.
Avatar billede smith1 Nybegynder
21. september 2006 - 14:26 #10
den siger stadig "No overload for method 'form2' takes '1' arguments"
Avatar billede staever Nybegynder
21. september 2006 - 15:09 #11
Du kan i form2 skrive følgende, såfremt din button1 er public, ellers skal den gøres det, hedder Modifieres i VS i properties:

Form1.button1.Text = "Test";

en anden udvej er at lave en metode som er public på form1, som du kalder fra form2, på følgende måde:

public static void SetButton1Text(string text){
    button1.Text = text;
}

og kald denne metode fra form2:

Form1.SetButton1Text();
Avatar billede hmortensen Nybegynder
21. september 2006 - 16:10 #12
Prøv at paste din Form2 kode her ind.
Avatar billede smith1 Nybegynder
21. september 2006 - 16:14 #13
hvis i 2 lige laver et svar.. så deler jeg pointne i mellem jer.. har fået det til at virke
Avatar billede staever Nybegynder
21. september 2006 - 16:43 #14
ved ikke om du mener mig, men her er svar
Avatar billede hmortensen Nybegynder
21. september 2006 - 17:59 #15
Og et her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester