Forskellen på CyberFessor's løsning og min er, at hans kræver at din komponent er Public. Hvis du vil bibeholde en vis inkapsulering i dit projekt, så bør du benytte min metode. Er du ligeglad, så kan du benytte begge metoder
ud fra din numerering af formene går jeg ud fra at form2 blivr åbnet fra form1. I så fald, så skal du på form1 have et field der kan indholde referencen:
public class Form1 : System.Windows.Forms.Form { private Form2 frm2;
(...) alt det andet i klassen
btn_Click(...) { frm2 = new Form2(); frm2.Show(); }
btnVisTreeview(...) { if (this.frm2 != null) frm2.VisTreeview(); } }
Jeg vil prøve at lave en klasse i stedet. Det eneste den skal kunne er at ændre treeView1.Visible = true; Men min reference FMain formmain virker ikke for jeg kan ikke tilgå det treeview i klassen ...
------------------------------------------------------------- using System;
namespace Bleh { /// <summary> /// Summary description for ShowTreeView. /// </summary> public class ShowTreeView { public FMain formmain; <----- VIRKER ikke??
public static void ShowTreeView() { // // TODO: Add constructor logic here //
noobsaibot>> i din sidte kommentar, hvordan havde du forestillet dig på nogen som helst måde, at formmain skulle kunne komme til at indeholde en reference til FMain? Det sker jo ikke af sig selv som ren magi.
Dette er et af de typiske problemer folk der starter med Object Orienteret Programmering løber ind i, og lige så enkelt løsningen er, lige så svær kan den være at forstå.
De magiske ord man skal fortå i denne sammenhæng er klasser, instanser og referencer.
ved at skrive public FMain formmain; har du definerer at her er en variabel som skal kunne indeholde en >reference< til en FMain->instans<. Men på nuværende tidspunkt er variablen TOM (!!). Det er DIN opgave at putte noget i den, og det skal være en >reference< til den FMain der allerede findes en instans af. Der kan jo godt være 213423486234327892398 instanser af FMain-klassen, og kun f.eks. den ene der bliver vist på skærmen. Så nytter det jo ikke at man kalder ShowTreeView() på en af de 213423486234327892397 andre, for det vil man ikke kunne se. Det gælder altså at få en reference til netop den ene som brugeren kan se.
Det kan gøre på mange forskellige måder, men det jeg skitsede i 20/04-2005 21:09:41 er langt den simpleste og som oftest tilstrækkeligt i små projekter.
Synes godt om
Ny brugerNybegynder
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.