+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Duplicazione form vb.net

  1. #1
    trapo non è in linea Scolaretto
    Salve a tutti,
    in un progetto vb.net dovrei eliminare tutto ciò che c'è in un form e farlo da capo anche se molte cose dovranno rimanere uguali. Dato che non vorrei perdere il lavoro volevo duplicare il form così da non perdere tutto e non saprei come fare. Un banale copia e incolla nell'esplora soluzioni non funziona; ho provato a rinominare il form duplicato nell'esplora soluzioni e a riportare lo stesso nome nella public class ma lo steso, tornando alla progettazione, non me la faceva visualizzare. Conoscete qualche metodo?

  2. #2
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Quote Originariamente inviato da trapo Visualizza il messaggio
    dovrei eliminare tutto ciò che c'è in un form e farlo da capo anche se molte cose dovranno rimanere uguali.
    Ricordati che puoi sfruttare la programmazione a oggetti anche sulle "cose visuali": puoi creare un Form di base, con le parti in comune tra tutti i Form, fare un Build e creare Form discendenti partendo da quello di base ed estendendolo con ciò che deve essere specificato o personalizzato.

    Vedi la documentazione ufficiale per approfondimenti.

    Ciao!
    ℹ️ Leggi di più su _alka_ ...

  3. #3
    trapo non è in linea Scolaretto
    Grazie per la risposta!
    Facendo Progetto>Aggiungi Form>Form ereditato>Ok mi crea un form dove mi chiede da quale form ereditare i controlli. Seleziono il form e riporta tutta la parte visiva però bloccata e senza codice. Ci sarebbe un altro metodo che importa anche il codice e che non blocchi i controlli? Ho trovato qualcosa del genere ma solo in C#.
    Ultima modifica di trapo; 21-03-2021 20:12 

  4. #4
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Quote Originariamente inviato da trapo Visualizza il messaggio
    Seleziono il form e riporta tutta la parte visiva però bloccata e senza codice.
    La parte visiva non dovrebbe essere bloccata: dovresti poter spostare i controlli dove e come vuoi.

    L'unica cosa è che ovviamente non puoi rimuoverli, in quanto sono stati introdotti da una implementazione che li crea e dalla quale hai "ereditato".

    Quote Originariamente inviato da trapo Visualizza il messaggio
    Ci sarebbe un altro metodo che importa anche il codice e che non blocchi i controlli? Ho trovato qualcosa del genere ma solo in C#.
    Credo che tu non abbia capito il meccanismo, o che tu non abbia letto bene.

    Non si tratta di creare un duplicato di un Form esistente che funge da template, ma di prendere un Form con tutto quello che contiene (quindi controlli e relative proprietà che definiscono il suo aspetto, e il relativo codice che ne definisce il comportamento) e creare un discendente, ossia un nuovo tipo di Form che deriva da esso, ossia prende tutto ciò che è presente (controlli, proprietà e codice) e ne crea uno nuovo, che quindi funziona esattamente come quello di partenza, ma che può essere personalizzato e specializzato per un determinato utilizzo, aggiungendo ed esempio controlli, gestendo eventi, spostando i controlli esistenti, ecc.

    NON stai clonando un Form, ma ne stai costruendo uno nuovo che usa il precedente come base di partenza: non vedi il codice perché ciò che definisce il comportamento del tuo nuovo Form è tutto ciò che è stato implementato in quello di partenza, che tu ricevi in dote e a cui puoi aggiungere qualcosa, se vuoi.

    Se vai a modificare il Form di base, quello di partenza, modificherai automaticamente tutti i discendenti, ma il codice che governa i controlli condivisi tra il Form e i suoi discendenti si troverà in un unico e solo punto, il Form di base appunto.

    Ovviamente, non ha senso creare un Form completo ed ereditarlo per togliere poi delle cose: è necessario fare il contrario, ossia creare il Form che possiede le caratteristiche (controlli e codice) che sono comuni a tutti i Form dell'applicazione, e derivare da quello aggiungendo ciò che manca o cambiando ciò che si deve comportare in modo diverso.

    Essendo possibile ereditare da qualsiasi Form, si possono costruire anche delle gerarchie, partendo da quello vuoto, quello che magari estende il primo e aggiunge griglia e altri controlli per visualizzare dei dati, quello che eredita dal vuoto e rappresenta una maschera (dialog) per inserire/modificare informazioni e così via.

    Leggi meglio la documentazione perché credo che il concetto sia abbastanza sfuggito, e approfondisci la OOP (Object Oriented Programming).
    ℹ️ Leggi di più su _alka_ ...

  5. #5
    trapo non è in linea Scolaretto
    Grazie mille. Sei stato molto chiaro; in effetti ho letto un po' velocemente la documentazione. Approfondirò

  6. #6
    trapo non è in linea Scolaretto
    Caio _alka_,
    rivedendo un po' la situazione ho visto che in effetti questo metodo non serve nel mio caso, forse non mi sono spiegato bene. Praticamente io ho un form che devo rimodellare ma, dato che molte cose devono rimanere uguali, mi sembra inutile creare un nuovo form. Allora mi chiedevo se fosse possibile poter duplicare un form nella sua interezza così, uno lo avevo di garanzia e in riserva, mentre sull' altro ci lavoravo e lo rimodellavo. In questo caso se creo il form ereditato non posso agire sul codice del form padre dato che poi lo modifica anche nell' ereditato; a me servirebbe un form di "garanzia" che sta lì e che non subisce modifiche. Comunque i controlli sono bloccati nel form ereditato. Avreste qualche altra possibilità da propormi?

  7. #7
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da trapo Visualizza il messaggio
    Conoscete qualche metodo?
    Io faccio così (esempio con Form1):
    1- Da Esplora Risorse seleziono i tre file:
    Form1.Destinger.vb
    Form1.resx
    Form1.vb

    2- Faccio copia & incolla (crea i tre rispettivi file con il suffisso _Copia

    3- Rinomino i tre file da Form1 a Form11

    4- Con il Blocco Note apro i due file:
    Form11.Destinger.vb
    Form11.vb
    e sostituisco tutte le occorrenze di Form1 con Form11, salvo e chiudo.

    5- Da Visual Studio:
    apro menu Progetti poi Aggiungi elemento esistente...
    seleziono il nuovo Form11

    6- Faccio tutte le modifiche che mi occorre fare, poi quando ho finito tolgo il vecchio Form1 (lo sposto in una sotto-cartella, se voglio tenerlo) e poi da Esplora Soluzioni faccio clic-destro e dal menu scelgo Rinomina, confermo.
    Fine.
    ℹ️ Leggi di più su gibra ...

  8. #8
    patel45 non è in linea Scolaretto
    Io faccio in modo più rapido di Gibra, apro un nuovo progetto e poi Progetti, Aggiungi elemento esistente

  9. #9
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da patel45 Visualizza il messaggio
    apro un nuovo progetto
    Forse non hai capito... oppure sono io a non aver capito?!

    Io ho capito che lui deve fare una copia del form nello stesso progetto,
    per cui non capisco cosa perché aprirne uno nuovo...

    Tu cosa hai capito?
    ℹ️ Leggi di più su gibra ...

  10. #10
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Se vuoi semplicemente conservare un form prima di fare modifiche importanti che potrebbero guastarne il funzionamento e vuoi lavorare su un duplicato dello stesso, ma non vuoi avere contemporaneamente i due form nello stesso progetto, bastano i punti 1. e 2. che ti ha detto gibra.
    ℹ️ Leggi di più su Brontolo ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Duplicazione file xml
    Da maingio nel forum Microsoft Excel
    Risposte: 18
    Ultimo Post: 08-04-2018, 21:01
  2. Duplicazione file xml
    Da maingio nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 06-04-2018, 13:35
  3. Duplicazione record in Public Sub
    Da AStart2015 nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 11-03-2017, 12:44
  4. Errore duplicazione del indice
    Da EgonLaHire nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 16-03-2012, 13:37
  5. Problema duplicazione data.
    Da francesco510 nel forum Microsoft Word
    Risposte: 7
    Ultimo Post: 23-10-2009, 11:12