Avatar billede amews_aj Nybegynder
05. maj 2006 - 15:58 Der er 12 kommentarer og
1 løsning

Sætte label fra en class (let)

Jeg vil gerne vide hvordan jeg sætter label1 herfra...
Jeg har midt i den skrevet en kommentar hvor den skal sættes, men der kan jeg ikke bare bruge this.label1.Text for der er den jo inde i class.

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.label1.Text = "Test";
        }

        public class testit {
           
            // HVORDAN SÆTTER JEG label1 HERFRA?

        }
    }
}
Avatar billede spaceus Nybegynder
05. maj 2006 - 16:18 #1
nu ved jeg ikke lige hvordan du opretter din test klasse...

har du din main i Form1 eller i testit..

case1
hvis main er i Form1 opretter du testit her, og så sender du bare en reference med til testit ala testit test = new testit(this.label1);

og så kan du bruge den

case 2
main er i testit
du opretter så Form1 herfra
der er så 2 måder
1. du laver en get/set metode i Form1 som er public, den kan du så kalde med objekt referencen til Form1 instansen
ala (i testit main)
Form1 f = new Form1();
f.setLabel1("Test");
og i Form1 skal så ligge metoden setLabel1 ala
public void setLabel1(string txt)
{
this.label1.Text = txt;
}

håber det hjælper
Avatar billede amews_aj Nybegynder
05. maj 2006 - 16:45 #2
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        public void setLabel1(string txt)
        {
            this.label1.Text = txt;
        }


        public class testit
        {
            Form1 f = new Form1();
            f.setLabel1("Test"); // Error: Invalid token '(' in class, struct, or interface member declaration   


        }
    }
}
Avatar billede amews_aj Nybegynder
05. maj 2006 - 16:47 #3
Error: Invalid token '(' in class, struct, or interface member declaration
Avatar billede spaceus Nybegynder
07. maj 2006 - 13:02 #4
ok, nu går jeg ud fra du har mere kode end det der... og kan heller ikke helt følge din plan, evt, kunne det du vil opnår klares i formens constructor, men anyways her er et fuldt eksempel

using System;class Class1
    {
using System.Windows.Forms;
namespace console_test
{
[STAThread]
        static void Main(string[] args)
        {
makeGui();
            Console.WriteLine("done");
       
        }

        public static  void makeGui()
        {
           
           
            Form1 f = new Form1();
            f.setLbl1("TEST");
            f.Show();
            Application.Run();
           
        }
    }
}


og en form med en label og metoden her

public void setLbl1(string txt)
        {
            this.label1.Text = txt;
        }
Avatar billede spaceus Nybegynder
07. maj 2006 - 13:23 #5
btw... angående dit eksempel

  public class testit
        {
          public testit()
          {
            Form1 f = new Form1();
            f.setLabel1("Test"); 
          }

        }
    }
}
Avatar billede spaceus Nybegynder
07. maj 2006 - 13:24 #6
og så en main i testit klassen
Avatar billede spaceus Nybegynder
07. maj 2006 - 13:27 #7
in full ;) og så stopper jeg

namespace test{
using System.Drawing;
using System;
using System.Windows.Forms;

public class Form1 : System.Windows.Forms.Form
{
    private Label label1 = new Label();
       
    public Form1()
    {

        this.label1.Location = new System.Drawing.Point(40, 72);
        this.label1.Name = "label1";
        this.label1.TabIndex = 0;
        this.label1.Text ="KEHEHE";
        this.Controls.Add(label1);   
    }

    public void setLabel1(string txt)
    {
        this.label1.Text = txt;
    }
           
}

class testit
{
    public testit()
    {
        Form1 f = new Form1();
        f.Show();       
        Application.Run();
    }

    public static void Main(string[] at)
    {
            testit t = new testit();
    }

}
}
Avatar billede amews_aj Nybegynder
07. maj 2006 - 17:31 #8
Stadig problemer..
label1 opdaterer sig ikke. Det er som om at dens indhold bliver sat, men at applicationen ikke opdaterer label1. Når jeg henter label1.Text ud så udskriver den det nye indhold men selve label1 retter sig ikke.
Hvis jeg tilføjer f.Show(); som i dit eksempel - så åbner den jo en ekstra form, og det vil jeg jo ikke....
Hvad kan jeg gøre galt?

(Ja selvf. har jeg anden kode - bruger MS Visual C# 2005 derfor sætter jeg ikke hele koden ind, kun for selve formen...)


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        public void setLabel1(string txt)
        {
            this.label1.Text = txt;
            MessageBox.Show(txt);
            MessageBox.Show(this.label1.Text);
        }


        private void button1_Click(object sender, EventArgs e)
        {
            testit t = new testit();
            t.testitd();
        }
    }

    class testit
    {
        public void testitd()
        {
            Form1 f = new Form1();
            f.setLabel1("test2");
        }

    }
}
Avatar billede spaceus Nybegynder
08. maj 2006 - 01:18 #9
prøv at køre f.update()
Avatar billede spaceus Nybegynder
08. maj 2006 - 01:30 #10
namespace test{
using System.Drawing;
using System;
using System.Windows.Forms;
    using System.Threading;

public class Form1 : System.Windows.Forms.Form
{
    private Label label1 = new Label();
       
    public Form1()
    {

        this.label1.Location = new System.Drawing.Point(40, 72);
        this.label1.Name = "label1";
        this.label1.TabIndex = 0;
        this.label1.Text ="KEHEHE";
        this.Controls.Add(label1);   
    }

    public void setLabel1(string txt)
    {
        this.label1.Text = txt;
    }
           
}

class testit
{
    public static Form1 f;
   
    public testit()
    {
       
    }

    public static void makeGui()
    {
        f = new Form1();
        f.ShowDialog();       
       

       
       
    }

    public static void Main(string[] at)
    {
            //testit t = new testit();
            Thread t = new Thread(new System.Threading.ThreadStart(makeGui));
            t.Start();
        Console.WriteLine("ke");
        Thread.Sleep(1000);
        f.setLabel1("KEBBAb");
        Console.WriteLine("kebanb");
    }

}
}

det der virker hos mig
Avatar billede amews_aj Nybegynder
08. maj 2006 - 08:09 #11
Jeg har en eksisterende form som jeg vil have den til at ændre en label i. Normalt kan jeg bare skrive this.label1.Text = ""; men det kan jeg ikke da den er i en andne class - med den anden kode du gav så åbner den en ny form når den ændre label1
Selve label1 er oprettet i Form1.

Hold dig venligst til nedenstående, den resterende kode for formen ligger i en anden fil:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        public void setLabel1(string txt)
        {
            this.label1.Text = txt;
            MessageBox.Show(txt);
            MessageBox.Show(this.label1.Text);
        }


        private void button1_Click(object sender, EventArgs e)
        {
            testit t = new testit();
            t.testitd();
        }
    }

    class testit
    {
        public void testitd()
        {
            Form1 f = new Form1();
            f.setLabel1("test2");
            f.Update();
            f.ShowDialog();
        }

    }
}
Avatar billede amews_aj Nybegynder
13. maj 2006 - 23:46 #12
Nogen ideer?
Avatar billede amews_aj Nybegynder
14. maj 2006 - 16:45 #13
Pga. manglende svar her, oprettet nyt spg. en smule mere forklarende: http://www.eksperten.dk/spm/709217

Lukker 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