Avatar billede sholm Nybegynder
21. juni 2007 - 16:00 Der er 11 kommentarer og
1 løsning

Skriv til control fra cs fil

Hej

Jeg har et lille windows program, hvor jeg har lavet en form og tilføjet en ListBox-control. Jeg har også lavet en .cs fil til at håndtere en del af mine rutiner.

Spørgsmålet er så hvordan jeg skriver til min ListBox fra min kodefil?

Jeg kan fint finde min form fra min kodefil, men ikke nogle af mine controls.

På forhånd tak :)
Avatar billede thesurfer Nybegynder
21. juni 2007 - 17:10 #1
Du skal bruge FindControl i din cs-fil.

Jeg kan ikke helt huske syntaxen, men noget i stil med:

ListBox lbx = (ListBox)FindControl("ID'et som din ListBox her");

FindControl returnerer vist type "control", som skal konverteres til den rette type, som er "ListBox".
Avatar billede thesurfer Nybegynder
21. juni 2007 - 17:42 #2
Hvis du bruger en MasterPage, skal du bruge FindControl på MasterPage'en..

Eksempel: (ListBox)mpTest.FindControl

Mener jeg.. :-)
Avatar billede sholm Nybegynder
21. juni 2007 - 17:56 #3
thesurfer >> Sådan ville jeg også gøre det HVIS det var en webside - men nu er det en windows applikation som jeg skrev i spørgsmålet :) Der er hverken masterpages eller en findcontrol metode så vidt jeg ved.
Avatar billede thesurfer Nybegynder
21. juni 2007 - 18:21 #4
Hehehe..

Jeg var vist lidt for hurtig på aftrækkeren.. så bare ".cs" som normalt bruges til codebehind på ASP.NET sider.. :-)

Så vidt jeg ved, kan man ikke tilgå formens kontroller (GUI elementer), fra en klasse..

Men du kunne prøve at sende listboxen med, når du laver kaldet i klasse..

Eksempel med en ListBox der hedder "lbx":

Klasse k = new Klasse();
k.Tilføj(lbx, "hello world");

Og i klassen "Klasse":

public void Tilføj(ListBox lbx, string tekst)
{
  lbx.Items.Add(tekst);
}

Jeg ved ikke om det virker.. og jeg mener at det er ".Itemst.Add".. husk Case-Sensitive.. dvs, forskel på store og små bogstaver..
Avatar billede thesurfer Nybegynder
21. juni 2007 - 18:22 #5
Rettelse:

Jeg ved ikke om det virker.. og jeg mener at det er ".Items.Add".. husk Case-Sensitive.. dvs, forskel på store og små bogstaver..
Avatar billede thesurfer Nybegynder
21. juni 2007 - 18:27 #6
Hmm.. Hvorfor vil du egentligt tilføje ting, til din listbox, fra en klasse..? :-)

Ellers kunne man f.eks. gøre sådan her:

Klasse k = new Klasse();

List<string> r = k.Tilføj();
foreach(string s in r)
{
lbx.Items.Add(s)
}

Hvor Tilføj-metoden f.eks. ser sådan ud:

public string[] Tilføj()
{
  List<string> tmp = new List<string>();
  for(int i = 0; i < 5; i++)
  {
 
  tmp.Add("linie: " + i);
 
  }

}

Så skulle listboxen gerne indeholde:

linie 0
linie 1
linie 2
linie 3
linie 4

vist nok.. :-)


Det kommer an på, hvad du egentligt laver i klassen.. :-)
Avatar billede sholm Nybegynder
21. juni 2007 - 18:35 #7
Det virker fint med at sende ListBoxen med - dog en noget træls løsning når der er list nestede funktioner :) Grunden til at jeg vil skrive til controlen på formen fra en cs fil er for at kunne skrive resultater ud til brugeren, f.eks. i dette tilfælde er det et adviseringsprogram og så vil jeg gerne have skrevet ud hvem jeg succesfuldt har sendt en mail til og mange andre ting.
Avatar billede sholm Nybegynder
21. juni 2007 - 18:36 #8
lidt nestede funktioner ikke list :)
Avatar billede thesurfer Nybegynder
21. juni 2007 - 18:54 #9
Hvis opdateringen sker løbende, og uden at man skal klikke på en knap (eller ligende), kan du oprette en tråd, der laver forespørgslen..
Husk bare, at man fra en tråd, ikke kan få direkte adgang til GUI'en.. man skal bruge Invoke..

Jeg ved ikke hvordan du har lavet programmet, og sat det op, men der er jo kun 1 kald, på hver side af "forbindelsen".. :-)

Her mener jeg, 1 metode fra formen, kalder 1 metode i klasse..
Hvad formen/klassen gør bagefter, er (sådan set) irrelevant.. :-)
Avatar billede thesurfer Nybegynder
21. juni 2007 - 18:56 #10
Med andre ord:

Så længe at formen får den rette type retur (f.eks. List<string>), går det fint..

PS: For at bruge generiske lister, som f.eks. List<> (eksempel: List<string>), skal du bruge Visual Studio 2005.. eller rettere sagt:

Du skal bruge .Net 2.0.. fordi List<> ikke findes i tidligere udgaver end 2.0.
Avatar billede sholm Nybegynder
25. juni 2007 - 13:23 #11
Tak for hjælpen du, smid endelig et svar.
Avatar billede thesurfer Nybegynder
25. juni 2007 - 13:32 #12
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
Kurser inden for grundlæggende programmering

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