Avatar billede amews_aj Nybegynder
14. maj 2006 - 16:44 Der er 10 kommentarer og
1 løsning

Sætte label fra en class

Da der er gået lang tid uden svar, opretter jeg spørgsmålet igen.

Jeg vil gerne vide hvordan jeg sætter label1 fra en anden class...
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.
Jeg kan ikke bruge noget med at starte en ny Form1 da der i min app. kun må være en Form1, ellers vil programmet crashe.
(Dette herunder er blot et eksempel)

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

        private void Form1_Load(object sender, EventArgs e)
        {
            this.label1.Text = "Test"; // Det går fint
        }

        public class testit {
         
            this.label1.Text = "Test"; // Virker ikke da det er i en anden class, hvad gør jeg ???

        }
    }
}

Håber på hurtig hjælp.
På forhånd tak!
Avatar billede ladyhawke Novice
14. maj 2006 - 18:50 #1
this.label1 virker kun hvis der findes en label1 i den klasse, så nej det kan du ikke i testit...

er din label1 defineret som public i Form1 klassen? ellers er det kun klasser som arver fra den, der kan se variablen.
Avatar billede amews_aj Nybegynder
14. maj 2006 - 19:02 #2
Hmm, ok...

Øhm måske kan du let svare på noget andet...?

Jeg har fundet en kode der registrerer aktivtet iform af keyboard/mus
Men i en bestemt linje sker der noget underligt:

hKeyboardHook = SetWindowsHookEx( WH_KEYBOARD_LL, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
if(hKeyboardHook == 0 )    {
    Stop();
    throw new Exception("SetWindowsHookEx ist failed.");
}

Når jeg debugger programmet i VS C# 2005, så kommer den med den exception der, men hvis jeg laver en publish, og kører den i stedet, så er der ingen problemer, hvorfor sker dette?
Og kan jeg undgå det?


Hvis jeg skal oprette nyt spg. så sig til..
Avatar billede hmortensen Nybegynder
14. maj 2006 - 19:14 #3
Hvis du vil tilgå elementer fra en klasse i en anden, kan du smide en reference over i den anden.


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

  public Label Label1
  {
    get { return label1; }
  }
}

public class testit
{
  private Form1 frm1;
  public testit(Form1 f)
  {
    frm1 = f;
  }

  public void SkrivPaaLabel()
  {
    frm1.Label1.Text = "Noget nyt tekst";
  }
}
Avatar billede amews_aj Nybegynder
14. maj 2006 - 19:19 #4
ok, tak, kan du svare på det jeg har skrevet som kommentar nr. 2?
Avatar billede hmortensen Nybegynder
14. maj 2006 - 19:22 #5
Nej desværre.
Avatar billede amews_aj Nybegynder
14. maj 2006 - 19:27 #6
Ok, så længe det virker på en måde så går det nok også, smid et svar hmortensen, du kom med noget jeg nok kan bruge....
Avatar billede hmortensen Nybegynder
14. maj 2006 - 19:28 #7
Nogle ting gir sære resultater ved debugging, men kører fint normalt.
Avatar billede amews_aj Nybegynder
14. maj 2006 - 19:30 #8
Ok så jeg skal ikke regne med altid at kunne bruge debug i VS 2005?
Avatar billede hmortensen Nybegynder
14. maj 2006 - 19:37 #9
Jo, eneste tidspunkt jeg har haft problemer med debug er ved keyboard events, og nogle netværk events.
Avatar billede amews_aj Nybegynder
14. maj 2006 - 19:38 #10
ok, her er dine point..
Avatar billede amews_aj Nybegynder
14. maj 2006 - 19:38 #11
tak for hjælpen
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