05. maj 2006 - 15:58Der 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(); }
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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; }
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; }
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(); }
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"); }
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(); }
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.