Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Difficoltà con la guida di Visual Basic Express

    Ciao amici,
    ho un problema nella cosultazione dell guida di Visual Studio 2005. Cercavo informazioni sul metodo Removeat(index) e in effetti ho trovato il metodo RemoveAt, ma come membro di due classi relative alla classe Listbox. Io invece cercavo questo metodo come metodo che si ottiene espandendo la proprietà items del controllo Listbox.
    Ho un pò di confusione: se una classe e un controllo (in questo caso Listbox) sono entrambi degli oggetti, come mai espongono proprietà e metodi che non sono esattamente gli stessi?
    Grazie.
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Originariamente inviato da giorgiogio48
    Ho un pò di confusione: se una classe e un controllo (in questo caso Listbox) sono entrambi degli oggetti, come mai espongono proprietà e metodi che non sono esattamente gli stessi?
    Non vedo perché classi differenti tra loro (non sono le stesse) dovrebbero avere gli stessi metodi.
    :master:
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3

    Re: Difficoltà con la guida di Visual Basic Express

    Originariamente inviato da giorgiogio48
    Ciao amici,
    Cercavo informazioni sul metodo Removeat(index) e in effetti ho trovato il metodo RemoveAt, ma come membro di due classi relative alla classe Listbox. Io invece cercavo questo metodo come metodo che si ottiene espandendo la proprietà items del controllo Listbox.
    La proprietà Items del controllo ListBox (classe System.Windows.Forms.ListBox) è una proprietà di tipo System.Windows.Forms.ListBox.ObjectCollection, ossia una classe interna alla classe ListBox; quando tu fai riferimento a ListBox.Items non espandi un bel niente, semplicemente la proprietà Items restituisce un oggetto ListBox.ObjectCollection di cui puoi invocare direttamente i metodi sulla stessa linea. La faccenda è resa più ingarbugliata dal fatto che la classe ListBox.ObjectCollection fa uso di una proprietà di default indicizzata (detta anche indicizzatore della classe in C#), ListBox.ObjectCollection.Item; in sostanza tutte le seguenti possibilità sono equivalenti (supponendo che lbxListBox sia una variabile di tipo System.Windows.Forms.ListBox):
    codice:
    '(in tutti gli esempi si fa riferimento a ToString giusto per fare qualcosa)
    'Utilizzo diretto della proprietà usando la proprietà di default di ListBox.ObjectCollection
    lbxListBox.Items(1).ToString()
    'Utilizzo diretto della proprietà usando esplicitamente la proprietà Item di ListBox.ObjectCollection
    lbxListBox.Items.Item(1).ToString()
    'Assegnazione della proprietà ad una variabile temporanea
    Dim tcollection As System.Windows.Forms.ListBox.ObjectCollection '(chi può dire quali imports sono stati utilizzati... :rollo: )
    tcollection=lbxListBox.Items
    'Uso della proprietà di default
    tcollection(1).ToString()
    'Uso esplicito della proprietà Item
    tcollection.Item(1).ToString()
    Ho un pò di confusione: se una classe e un controllo (in questo caso Listbox) sono entrambi degli oggetti, come mai espongono proprietà e metodi che non sono esattamente gli stessi?
    Grazie.
    Vale la stessa risposta di Alka; tra l'altro ti ricordo che anche i controlli sono classi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Ringrazio tutti per gli interventi.
    Lo so che un controllo è una classe. Però, nello scrivere un codice, se io scrivo System.Windows.Forms.ListBox e poi ci metto il punto, mi appaiono un certo numero di metodi, proprietà e classi tra le quali anche la classe ObjectCollection. Mentre se scrivo direttamente Listbox1 e poi il punto mi appaiono molti più membri, tra i quali anche la classe ObjectCollection e, ad es, le proprietà Width, Heigth e Size che sono tipiche di un controllo.
    E' questo che vorrei capire meglio, perchè poi nella guida devo cercare cosa fa il metodo Removeat. Comunque vi chiedo scusa se non riesco a capire subito.
    Ciao.
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

  5. #5
    se io scrivo System.Windows.Forms.ListBox e poi ci metto il punto, mi appaiono un certo numero di metodi, proprietà e classi tra le quali anche la classe ObjectCollection.
    Si tratta dei metodi e delle proprietà Shared, ossia condivise tra tutte le istanze dei controlli.
    Mentre se scrivo direttamente Listbox1 e poi il punto mi appaiono molti più membri, tra i quali anche la classe ObjectCollection e, ad es, le proprietà Width, Heigth e Size che sono tipiche di un controllo.
    Questi invece sono i metodi d'istanza.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Originariamente inviato da MItaly
    Si tratta dei metodi e delle proprietà Shared, ossia condivise tra tutte le istanze dei controlli.
    Questi invece sono i metodi d'istanza.
    ...e sono concetti che - secondo me - andrebbero appresi prima di mettersi ad usare un linguaggio.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Riciao a tutti.
    Ringrazio MItaly per le indicazioni che mi ha dato, ma sinceramente l'argomento non mi è ancora del tutto chiaro.
    Quanto a quello che mi suggerisce alka dico che la teoria non mi ha mai fatto paura e spesso preferisco, prima di affrontare una questione, l'approccio teorico. Quindi in questo caso non c'è in me cattiva volontà o voglia di prendere a tutti i costi una scorcaiatoia inutile.
    La mia difficoltà in questo caso era inevitabile, sia partendo dalla pratica che dalla teoria. Ma non sono uno che si ferma.
    Ringrazio comunque, a riguardo, sia alka che è sempre pronto a mettere a disposizione le sue conocenze, sia MItaly.
    Ciao.
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.