Avatar billede senil Nybegynder
06. juli 2006 - 10:59 Der er 7 kommentarer og
1 løsning

Nyt event på en string.

Hej eksperter...
Jeg har lavet et custom form.
Denne har en property string som angiver en mappe på computeren.
Jeg vil gerne lave en event på denne string, så at nå den opdatere/ændre værdi, så kan den opdatere et treeview.

Hvordan kan det løses???

lidt kode:
  public string RootFolder
        {
            get { return _RootFolder; }
            set { _RootFolder = value; }
        }
Avatar billede hmortensen Nybegynder
06. juli 2006 - 11:17 #1
Du behøver vel ikke en event.
Du kan jo smide mere kode i set'eren på din property:

public string RootFolder
{
  get { return _RootFolder; }
  set
  {
    _RootFolder = value;
    //Opdater treeview
  }
}
Avatar billede senil Nybegynder
06. juli 2006 - 11:24 #2
Det må være varmen der trykker... selvfølgelig kan man bare bruge set.....
Tak, giv et svar...
Avatar billede md_craig Nybegynder
06. juli 2006 - 11:35 #3
Mja... men du kan også godt bruge Events, du siger en Custom Form???
Ehm... Mener du så bare en alm. Windows Form (Du arver fra Form?) eller mener du en Custom Control (Du arver fra Control?)

I dit sidste tilfælde kunne dit Event være relevant nok som jeg ser det, hvad vis det er et Treeview uden for din Control der skal opdateres fx?...

Du laver Events således:

//Erklæring af eventet og tilhørende handler:
public delegate void RootFolderChangedEventHandler(object sender, EventArgs args);
public event RootFolderChanged;

//God skik ifl MS er at have en OnEvent metode
protected void OnRootFolderChanged(EventArgs args)
{
  if(this.RootFolderChanged != null)
    this.RootFolderChanged(this,args);
}

//Og endelig implementeringen i din Property
public string RootFolder
{
  get { return _RootFolder; }
  set
  {
    _RootFolder = value;
    this.OnRootFolderChanged(new EventArgs);
  }
}
Avatar billede senil Nybegynder
06. juli 2006 - 11:42 #4
Tak til jer begge... De 2 løsninger er super gode.
Smid et svar begge 2 og i kan dele points.
Hmortensen for det hurtige og smarte "work around" svar.
md_craig for det mest korrekte svar.
Avatar billede md_craig Nybegynder
06. juli 2006 - 11:51 #5
hehe... ok så... der manger lige et par () på "new EventArgs"å det bliver "new EventArgs()"...

Her kan du yderligere evt. lave din egen eventargs klasse og lagre fx stien den blev ændret til i...

public class RootFolderEventArgs : EventArgs
{
  private string folder;
  public string Folder { /*get og set bla bla.*/ }

  public RootFolderEventArgs(string folder)
  {
    this.folder = folder;
  }
}

Og så give den med i et event istedet... und so veiter... mange muligheder...
Avatar billede md_craig Nybegynder
06. juli 2006 - 11:52 #6
skull være et svar ^^
Avatar billede hmortensen Nybegynder
06. juli 2006 - 13:18 #7
md_craig, mener bare der ikke er grund til at bruge en event, hvis det kan løses uden, men afhænger jo 100% af situationen.
Avatar billede md_craig Nybegynder
06. juli 2006 - 23:21 #8
Nej, det er det nødvendigvis heller ikke, Det... eller at kalde en extern metode i samme klasse kan fint være to gode løsninger, men nu gav jeg en specifik grund til hvor det evt. kunne være en bedre løsning... på baggrund af at jeg ikke helt ved hvordan jeg skal Tolke hans "Custom Form"...

I det øjeblik man laver Controls som sagt, er events typisk en god løsning, ligsom en knap er en Control og har en række event, så kunne en Custom Control give visse Events til det overordnede...

Sagen er at lige såvel som man kunne ønske at sætte denne ændring uden for klassen/objectet selv, kunne man have lyst til at lytte på eventet også...
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