Avatar billede lasserasch Juniormester
06. januar 2007 - 02:40 Der er 15 kommentarer og
1 løsning

Lidt hjælp til brug af UserControls.

Hejsa.

Jeg har brug for lidt hjælp til at komme i gang med at bruge usercontrols.


Jeg har en applikation, som inderholder en frm_main.cs form.
Så har jeg bygget pt. 2 user controls med diverse knapper på.

Jeg vil så gerne kunne bruge disse usercontrols som menu'er i mit program.

Dvs. som standard har jeg lagt usercontrol1 ud på frm_main formen.

Dette er et usercontrol som indeholder en hovedmenu.
Hvis jeg klikker på en af knapperne ville jeg gerne have den til at fjerne usercontrol1 og så i stedet vise usercontrol2 på frm_main formen.


Hvordan gøres det? Jeg kan ikke rigtig få det til at virke.
Jeg kan godt få den til at fjerne usercontrol1 når jeg trykker på en knap, som ligger på usercontrol1, men den vil ikke vise usercontrol2.

Kan en give et eksempel på hvordan dette gøres?


/Lasse
Avatar billede Syska Mester
06. januar 2007 - 03:00 #1
Skriv hvad du har prøvet og lidt kode ...

usercontrol2.Visible = true;
usercontrol2.Enable = true;
usercontrol2.Show();

Du har ikke rigtig beskrevet hvor din usercontrol2 ligger henne?
Avatar billede lasserasch Juniormester
06. januar 2007 - 03:20 #2
Ok.

Min frm_main indeholder en tom form, som har en stilet flot grafisk baggrund og intet andet. Her har jeg så tilføjet mine 2 usercontrols oven på hinanden.

På usercontrol1, som vises når programmet starter, da den er den enste som er visible ligger det nogle buttons, som har billedet på sig. Disse buttons skal brugeren kunne trykke på, og så få vist andre menu valgmuligheder i stedet for.

F.eks. hvis man klikker på button1 på usercontrol1 så skal jeg gerne have fjernet usercontrol1 fra frm_main og så have vist usercontrol2 i stedet for.

Så jeg har vel brug for, på kodeniveau at kunne få vist de forskellige usercontrols og fjerne dem igen.

Jeg har forsøgt mig med at lægge denne void ind på frm_main formen, men jeg gør et eller andet galt!

public static void choosemenu(UserControl UC_ToClose, UserControl UC_ToShow)
        {
            MessageBox.Show("TEST");
            UC_ToClose.Hide();
            UC_ToShow.Show();
        }

Den viser fint min messagebox når jeg klikker på en knap på usercontrol1, men den fjerner ikke usercontrol 1 og viser heller ikke usercontrol2.

Jeg kalder denne void fra usercontrol med følgende stykke kode :


private void button1_Click(object sender, EventArgs e)
        {
            usercontrol2 usercontrol2 = new usercontrol2();
            frm_main.choosemenu(usercontrol2, this);
           
        }
Avatar billede lasserasch Juniormester
06. januar 2007 - 03:27 #3
Lille fejl :

Jeg gør sådan her :

public static void choosemenu(UserControl UC_ToShow, UserControl UC_ToClose)
        {
            MessageBox.Show("TEST");
            UC_ToClose.Hide();
            UC_ToShow.Show();
        }

Den skjuler nu usercontrol1 men viser stadig ikke usercontrol2.
Avatar billede Syska Mester
06. januar 2007 - 03:33 #4
skal du ikke også sætte:
UC_ToShow.Visable = True;

hvis du som std har sat den til False

og hvad andet har du ændret på UC2 ?
Avatar billede Syska Mester
06. januar 2007 - 04:04 #5
flot exp ... ved ligehold af server hvert DØGN ... DOHHHH

men mit indlæg kom da med ..
Avatar billede lasserasch Juniormester
06. januar 2007 - 04:13 #6
Ja, det er lidt irriterende med deres vedligeholdelse nogle gange!

Jeg har lige forsøgt at sætte visible til true også.

Men tænker at det vel heller ikke duer at bruge UserControl UC_ToShow.

Jeg opretter jo en reference til det nye UserControl på UserControl1 og det gemmer jeg jo.

Jeg skal jo have fat i usercontrol2 referencen som jeg har oprettet på frm_main ik'?

Det kan jeg fra frm_main kun fange ved at skrive : this.usercontrol2.show();
jeg kan ikke bare skrive UC_ToShow.show();

Men kan man ikke fra et usercontrol få fat i alle de reference og metoder, som ligger på den form usercontrolet er oprettet på?
Avatar billede Syska Mester
06. januar 2007 - 04:23 #7
under "Parent" på controlen, kan du se hvor den ligger ... altså hvem den "far" er ..

Hvis du laver en ny reference så passer den gamle jo selvf ikke ... logik

Så bliver du nød til at finde den reference frem hvsi du allerede har trukket den ind på din form ....

// ouT
Avatar billede lasserasch Juniormester
06. januar 2007 - 04:26 #8
Kan du give et eksempel!
Avatar billede Syska Mester
06. januar 2007 - 04:51 #9
nej .. ikke sådan lige ... som sagt ... jeg har ingen ide om hvordan det hele hænger sammen i dit program ... men en ting der undre mig er hvorfor du laver en menu til en usercontrol?

jeg går ud fra der er en grund ?

Men ... den funktion kalder du vel fra et sted af ? Hvorfor er den static ?
Synes ikke rigtig logiken hænger sammen i den måde du prøver at lave det på ....

men noget ala
Usercontrol2 uc2;
foreach(Control u in this.Parent.Controls)
{
if(u is usercontrol2)
{
// din usercontrol er fundet
uc2 = u;
break;
}
}

så har du den ref ... er ikke testet ...
Avatar billede Syska Mester
06. januar 2007 - 22:38 #10
har du fået det til at virke ?
Avatar billede lasserasch Juniormester
02. oktober 2007 - 12:06 #11
Er for lang tid siden til at jeg kan huske noget om dette. Smid svar for points!

/Lasse
Avatar billede lasserasch Juniormester
25. oktober 2007 - 08:19 #12
buzzz et svar, så denne kan blive lukket ;-)

/Lasse
Avatar billede lasserasch Juniormester
11. oktober 2010 - 20:40 #13
Buzzzz? Skal vi få lukket?
Avatar billede Syska Mester
11. oktober 2010 - 20:48 #14
joda :-)
Avatar billede lasserasch Juniormester
11. oktober 2010 - 21:10 #15
Det var nu et svar jeg var ude efter, så jeg kan give nogle points :-)
Avatar billede Syska Mester
11. oktober 2010 - 21:42 #16
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