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

Codice eseguito a design-time

  1. #1
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Buongiorno.
    Seguendo le vostre preziose indicazioni ricevute in questa discussione ho messo in piedi una struttura dell'applicazione basata su un form base (FormBase) e due form derivati (Form1 e Form2) molto simili tra loro sia nel codice che nell'aspetto. Tutto funziona e la quantità complessiva di codice si è ovviamente ridotta. Non capisco però il fenomeno che ora descrivo.
    Nel form base, nell'evento Load (ma è lo stesso se lo faccio nel costruttore) viene popolato un combobox da una tabella del db, la cui connessione viene aperta in altra parte dell'applicazione (Sub Main). A run-time funziona bene, ma a design-time, quando cerco di visualizzare uno dei form derivati, viene eseguita la routine di popolamento del combobox e viene sollevato un errore in quanto la connesione al db non è aperta. In altre parole, cliccando sulla linguetta Form1.vb(Progettazione) o Form2.vb(Progettazione) viene mostrato il FormBase (con i controlli bloccati) e ne viene eseguito l'evento Load che, ovviamente, solleva l'errore di connessione chiusa.
    La soluzione è semplice, basta testare se la connessione è aperta prima di popolare il combo, oppure controllare se si è in debug, ma mi piacerebbe capire perché avviene quanto descritto.
    Grazie e buona domenica.
    ℹ️ Leggi di più su Brontolo ...

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Buongiorno.
    Non prendetela come un sollecito, ma se qualcuno è incuriosito da questa insolita questione posso preparare e postare un mini-progetto di test.
    ℹ️ Leggi di più su Brontolo ...

  3. #3
    Prepara il test ... facciamo prima ...
    ℹ️ Leggi di più su AntonioG ...

  4. #4
    Sgrubak non è in linea Scribacchino
    Quote Originariamente inviato da Brontolo Visualizza il messaggio
    La soluzione è semplice, basta testare se la connessione è aperta prima di popolare il combo, oppure controllare se si è in debug, ma mi piacerebbe capire perché avviene quanto descritto.
    Io ero incuriosito... Non ho avuto modo di fare alcun test, ma ho trovato questa discussione che suggerisce l'utilizzo della verifica della proprietà DesignMode. Mi resta oscuro il perché venga eseguito il costruttore della classe base, o il suo metodo Load a design. Ma magari può essere una soluzione alternativa valida, almeno al controllo del Debug che rischia di non eseguire il codice se cominci appunto a debuggare.

  5. #5
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Sì Sgrubak, il link che hai postato sembra descrivere lo stesso fenomeno che ho riscontrato io. Testare se si è in debug mode è uno dei work-around possibili, ma ero più interessato a capire il meccanismo che a risolvere il problema.
    ℹ️ Leggi di più su Brontolo ...

  6. #6
    Nel link postato da Sgrubak c’è anche la motivazione:

    When you open a Form in windows forms designer, the designer looks into the first class in the file. If the file has a Designer.cs containing the other partial part of the class, also includes it and tries to deserialize those file contents. In the process of deserialization and loading the design time of your form, it creates an instance of the base class of your form and looks in those files for component declarations and InitializeComponents method. If find them creates components and sets properties of them using deserialized codes and add components to the instance of base class which created.

    Some useful facts:

    Codes in constructor of your Form will not execute at design-time, but the constructor of base class of your form will execute in design-time.
    Codes in InitializeComponent will not execute at design-time, but those codes will be deserialized and will be used to create designer of the form.
    Il fatto che il form sia usato come Form Base, implica l’esecuzione del codice quando i Form Figli devono leggerne “il contenuto”.
    ℹ️ Leggi di più su Fix ...

  7. #7
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Certo che è una cosa strana eh? Vi allego comunque il mini-progetto che stavo preparando.
    Grazie. Alla prossima.
    TestMD.zip
    ℹ️ Leggi di più su Brontolo ...

  8. #8
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da Brontolo Visualizza il messaggio
    viene popolato un combobox da una tabella del db, la cui connessione viene aperta in altra parte dell'applicazione (Sub Main).
    All'avvio mi risponde così:
    Gravità	Codice	Descrizione	Progetto	File	Riga	Stato eliminazione
    Errore	BC30420	'Sub Main' non è stato trovato in 'TestMD'.	TestMD	D:\Downloads2\MasterDrive\Brontolo\TestMD\vbc	1	Attivo
    
    1. Dov'è la Sub Main?
    2. Dov'è il file database?
    3. Dov'è il combobox?
    Ultima modifica di gibra; 06-07-2021 10:43 
    ℹ️ Leggi di più su gibra ...

  9. #9
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Hai ragione gibra. Dal link segnalato da Sgrubak è emerso che database, combobox ecc. non c'entravano niente, quindi ho ulteriormente semplificato il mini-progetto. Basta cambiare, nelle proprietà del progetto, il form di avvio in FormMenu anziché Sub Main.
    Del resto il fenomeno si osserva già all'apertura della solution, cioè prima ancora di avviare l'esecuzione.
    ℹ️ Leggi di più su Brontolo ...

  10. #10
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da Brontolo Visualizza il messaggio
    Del resto il fenomeno si osserva già all'apertura della solution, cioè prima ancora di avviare l'esecuzione.
    Non so cosa dirti, io non osservo alcun 'fenomeno' vedo semplicemente dei form vuoti e nessun errore.
    ℹ️ Leggi di più su gibra ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Proprietà di un custom control a design time
    Da persichetti nel forum Visual Basic .Net
    Risposte: 5
    Ultimo Post: 15-05-2016, 12:53
  2. [VB2010] Proprietà a design-time: come ricavare il codice?
    Da imbranato nel forum Visual Basic .Net
    Risposte: 5
    Ultimo Post: 08-05-2012, 07:35
  3. Debug del supporto a design-time degli User control
    Da elisab nel forum Visual Basic .Net
    Risposte: 0
    Ultimo Post: 01-07-2010, 20:39
  4. UserControl Design-Time bloccare il ridimensionamento
    Da bornslippy nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 18-09-2006, 23:27
  5. Togliere i puntini sul Form presenti a design-time
    Da Smith nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 10-12-2005, 19:34