Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [VB2010] Form e Classi

  1. #1

    [VB2010] Form e Classi

    Solita menata esistenziale per tenere la vecchia mente in allenamento...

    Dunque, se in UN ALTRO FORM della applcazione io scrivo:

    FrmPippo.txtNome.SelectionStart = 2 'esempio qualsiasi

    non c' è nessun problema, anzi le cose vengono scritte quasi da sole dall' autocomposizione.

    Ma se io scrivo:

    Dim f as form = FrmPippo '(il codice viene accettato senza problemi)

    non posso poi scrivere:

    f.txtNome.SelectionStart = 2

    perché non riconosce la TextBox come membro di f.

    Con un For Each c as control in f

    posso risalire alla txtNome e magari ricavarne il testo... ma non posso in nessun modo fare un:

    f.txtNome.SelectionStart = 2

    ... insomma, c' è la possibilità di selezionare il testo di un altro form partendo da una variabile e non dal nome esatto del form, senza ricorrere ad un Select in cui mettere tutti i nomi dei form?

    Ripeto: domanda da sega mentale... posso benissimo risolvere il problema con un Select... ma i form sono moltissimi, mi piacerebbe un codice più "pulito".

  2. #2
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Qualcosa del genere:
    codice:
    Dim f as FrmPippo= FrmPippo
    in modo che "f" eredita da FrmPippo e sia la stessa cosa?

  3. #3
    Si, ma così è esattamente la stessa cosa, ho solo cambiato il nome di FrmPippo, non ho creato una "variabile globale" da dichiarare a seconda della classe che mi serve da poter "passare" ad altri Form.

    Preciso meglio: immagina 20 form uguali salvo pochi dati, ereditati da FrmPippo.

    Voglio "attaccare" al FrmPippoX in foreground un altro Form, chiamiamolo FrmFont, ove voglio cambiare Font del FrmPippoX in foreground.

    Se io "passo" a FrmFont la variabile "f as form" (ove f è il FrmPippoX in foreground), ricavo in FrmFont: f.Top, f.Left ecc. e posso posizionare FrmFont nella posizione adatta rispetto al FrmPippoX in foregrouund.

    Ma quando voglio cambiare Font di FrmPippoX a seconda del Font selezionato in FrmFont... mi fermo, perché NON HO un f.txtNome....

    L' unica cosa che posso fare è un If o un Select:

    If f.Name= "frmPippo" then FrmPippo.txtNome.Font = ...........
    elseIf f.Name = "frmPippo1" then FrmPippo1.txtNome.Font = ....
    ecc.

    Si fa, ma mi pare strano che non si possa "abbreviare".

  4. #4
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Originariamente inviato da eziogsv
    Si, ma così è esattamente la stessa cosa, ho solo cambiato il nome di FrmPippo, non ho creato una "variabile globale" da dichiarare a seconda della classe che mi serve da poter "passare" ad altri Form.
    No,
    Nel primo caso la variabile era di tipo Form nel secondo di tipo FrmPippo che eredita da Form.
    E' una cosa ben diversa.

    Se per forza di cosa hai un oggetto di tipo form, ma SAI che è FrmPippo puoi fare ad esempio fare:

    Dim f As Form = Form2
    Dim F2 As Form2 = DirectCast(f, Form2)

  5. #5
    .... ecc. Si fa, ma mi pare strano che non si possa "abbreviare".
    Certo che si può abbreviare .... e le strade sono tante, dipende da quale obbiettivo vuoi raggiungere.
    Tra le tante strade, ad esempio, vedo quella di implementare un interfaccia comune a tutti i Form(a patto che i campi sui quali vuoi intervenire, siano gli stessi per tutti i form.) oppure potresti creare uno UserControl che eredita da Form e che potrai a questo punto estendere a tuo piacimento.
    Insomma, di strade ce ne sono molte altre.
    Quello che non è chiaro è da dove nasce la tua esigenza di accedere da un form ad un altro in così tante occasioni e perchè, dato che hai a disposizione un oggetto già tipizzato ad hoc, ti ostini a voler tipizzare le tue variabili in modo generico.

    Ciao

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.