01. februar 2006 - 11:10
Der er
14 kommentarer og 1 løsning
skrive til label fra anden klasse
Hej Eksperter Jeg har lidt svært ved at hitte ud af hvordan jeg får fadt i et label fra en anden klasse i det samme namespace, her er hvad jeg har: namespace FileRenamer { public partial class FileRenamerForm : Form { public FileRenamerForm() { InitializeComponent(); } } } namespace FileRenamer { partial class FileRenamerForm { //Windows Form Designer generated code private System.Windows.Forms.Label label1; } } namespace FileRenamer { public class Rename { public Rename() { //Hvordan får jeg sat label.Text = "noget" her?? } } }
Annonceindlæg fra Infor
01. februar 2006 - 11:20
#1
Du kunne vel lave en metode med 1 argument. Som ændre teksten i din label
01. februar 2006 - 11:27
#2
Jeg tror ikke jeg er helt med på hvad du mener, prøv at komme med et eksempel. :) Problemet er "label1 eksistere ikke i contexten" får jeg at vide uanset hvor jeg forsøger at benyte det i Class Rename( Der er mere kode end vist )
01. februar 2006 - 11:51
#3
det kan godt være det er mig der er helt skæv men jeg troede ideen med namespace var at man kunne tilgå de øvrige klasser, funktioner og public objekter?
01. februar 2006 - 12:13
#4
I den klasse hvor du vil ændre din label text laver du en metode således private void ChangeLabel(string lbl) { lbl.text = lbl; } Og så kalder du den metode fra den anden klasse
01. februar 2006 - 13:10
#5
den er lige præcis det jeg ikke kan =) I alle metoder i klassen Rename kender de ikke til at de labels jeg har lavet i klassen FileRenamerForm, udanset om de er private eller public
01. februar 2006 - 13:30
#6
Sorry min fejl din metode skal selvfølgelig være public. Så kan du kalde den fra den anden klasse af
01. februar 2006 - 13:32
#7
lav label om til en public static. og brug public Rename(string text) { FileRenamerForm.label.Text = text; }
01. februar 2006 - 14:41
#8
static ???? umiddelbart lyder det noget pænere at lade den anden form have en reference til den første form og så kald en ikke static metode
01. februar 2006 - 14:48
#9
hvordan går jeg det arne?
01. februar 2006 - 14:48
#10
lol.. hordan gør jeg det mener jeg =)
01. februar 2006 - 15:37
#11
jeg prøver at hæve antallet af pointene lidt, for at se om nogen kan komme med en metode hvor: public System.Windows.Forms.Label label1; ikke behøver at være static.
01. februar 2006 - 17:12
#12
du kan sende en reference til FileRenamerForm når du skal istantiere Rename klassen. public Rename(FileRenamerForm frf) { frf.Label1.Text = "test"; } for at får reference med fra FileRenamerForm gør du sådan her: Rename re= new Rename(this);
02. februar 2006 - 08:39
#13
Sådan her kan det også gøres
Dette her er et visual studio 2005 projekt
Kan downloades her
http://peecee.dk/?id=27626
02. februar 2006 - 10:56
#14
hai det virker :P Jeg har brugt dr chaos's løsning, såå hvis du lige smider et svar så kommer der point på kontoen =) Mange tak til alle!
02. februar 2006 - 18:14
#15
svar :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.