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

    [VB.NET] Aprire una form avendo il nome in una stringa

    Ciao,
    sapete qual'è il codice per aprire una seconda form conoscendo il nome solo a runtime?
    Cioè immaginiamo di essere in Form1 e di avere una variabile FormName2 = "NuovaForm".
    come faccio a dire che voglio aprire la 2' form? Devo sfruttare Me.Parent?

    Grazie,
    marco
    marco

  2. #2
    Secondo me potresti utilizzare un semplice Select Case o una serie di If

  3. #3
    si, ma non credo sia la soluzione migliore. Se per esempio ho centinaia di Form, finirei con l'avere del codice molto lungo.
    L'esigenza nasce dal fatto di voler realizzare un applicazione multi lingua; pensa di avere molte form, bottoni ecc.. e di popolare in un db gli oggetti con le proprie traduzioni a seconda dela lingua:

    Tabella db:
    NomeForm; NomeOggetto; Lingua; Traduzione
    Form1; Button1; Italiano; Ciao
    Form1; Button1; English; Hello
    ...

    Vorrei che l'utente possa modificare la lingua anche durante l'esecuzione dell'applicazione, per esempio da una combo. Quando questo avviene, devo leggere dal db tutti i soggetti interessati alla traduzione e modificarli.
    marco

  4. #4
    Originariamente inviato da marcobrambilla
    si, ma non credo sia la soluzione migliore. Se per esempio ho centinaia di Form, finirei con l'avere del codice molto lungo.
    L'esigenza nasce dal fatto di voler realizzare un applicazione multi lingua; pensa di avere molte form, bottoni ecc.. e di popolare in un db gli oggetti con le proprie traduzioni a seconda dela lingua:

    Tabella db:
    NomeForm; NomeOggetto; Lingua; Traduzione
    Form1; Button1; Italiano; Ciao
    Form1; Button1; English; Hello
    ...

    Vorrei che l'utente possa modificare la lingua anche durante l'esecuzione dell'applicazione, per esempio da una combo. Quando questo avviene, devo leggere dal db tutti i soggetti interessati alla traduzione e modificarli.
    io non salverei i dati cosi, salverei solo un index x la sringa, la lingua e una stringa col nome . All'utente potrebbe venire difficile capire i nomi dei form e degli oggetti

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da marcobrambilla
    sapete qual'è il codice per aprire una seconda form conoscendo il nome solo a runtime?
    Devi usare classi di System.Reflection per caricare dinamicamente il tipo corrispondente dall'assembly in cui è contenuto.

    Il discorso è un po' lungo è complesso...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  6. #6
    Originariamente inviato da marcobrambilla
    si, ma non credo sia la soluzione migliore. Se per esempio ho centinaia di Form, finirei con l'avere del codice molto lungo.
    L'esigenza nasce dal fatto di voler realizzare un applicazione multi lingua; pensa di avere molte form, bottoni ecc.. e di popolare in un db gli oggetti con le proprie traduzioni a seconda dela lingua:

    Tabella db:
    NomeForm; NomeOggetto; Lingua; Traduzione
    Form1; Button1; Italiano; Ciao
    Form1; Button1; English; Hello
    ...

    Vorrei che l'utente possa modificare la lingua anche durante l'esecuzione dell'applicazione, per esempio da una combo. Quando questo avviene, devo leggere dal db tutti i soggetti interessati alla traduzione e modificarli.
    La mia idea è questa: crei un database multitabella: ogni tabella corrisponde a una lingua. In seguito carichi il database con i vari controlli OleDb e scegli la tabella riferendola con la stringa presa dalla combobox. Quindi analizzi il database, che deve essere strutturato così:
    codice:
    IDForm; NomeOggetto; Traduzione
    Sfrutti l'ID della form per trovarla rintracciando la proprietà Tag (che devi avere impostato prima) (variante: puoi dichiarare un array di forms), quindi prelevi l'oggetto con <Form>.Controls(NomeOggetto), e ne imposti il testo modificando la proprietà Text.

    Riguardo alla prima domanda che hai fatto, non l'ho capita bene.

  7. #7
    Ciao,
    puoi usare il comando

    form("nome del form").show o showdialog

    Saluti

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.