Avatar billede mirakulix Nybegynder
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??
    }
  }
}
Avatar billede alex_sleiborg Nybegynder
01. februar 2006 - 11:20 #1
Du kunne vel lave en metode med 1 argument. Som ændre teksten i din label
Avatar billede mirakulix Nybegynder
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 )
Avatar billede mirakulix Nybegynder
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?
Avatar billede alex_sleiborg Nybegynder
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
Avatar billede mirakulix Nybegynder
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
Avatar billede alex_sleiborg Nybegynder
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
Avatar billede dr_chaos Nybegynder
01. februar 2006 - 13:32 #7
lav label om til en public static.

og brug

public Rename(string text)
    {
    FileRenamerForm.label.Text = text;
    }
Avatar billede arne_v Ekspert
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
Avatar billede mirakulix Nybegynder
01. februar 2006 - 14:48 #9
hvordan går jeg det arne?
Avatar billede mirakulix Nybegynder
01. februar 2006 - 14:48 #10
lol.. hordan gør jeg det mener jeg =)
Avatar billede mirakulix Nybegynder
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.
Avatar billede dr_chaos Nybegynder
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);
Avatar billede alex_sleiborg Nybegynder
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
Avatar billede mirakulix Nybegynder
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!
Avatar billede dr_chaos Nybegynder
02. februar 2006 - 18:14 #15
svar :)
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