Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.NET] - Agire sui controlli del form d'origine

    Salve a tutti!
    Faccio una domanda forse stupida (come spesso accade nei miei topic )

    Allora io ho un form che può essere lanciato da più punti nel mio software.

    Per lanciarlo uso:

    codice:
    mioForm.show(me)
    in questo modo nel form appena aperto mi ritrovo OWNER che non è nient'altro che il form da cui ho lanciato quello attuale (mioForm).

    Sin qui tutto ok posso manipolare un minimo il form di origine...ma se volessi agire sui controlli in esso contenuto? Non c'è un modo se non li creo a runtime vero?

    Io per esempio da questo form vorrei popolare una dataGridView che sta in quello di origine (dopo aver verificato che quello di origine è quello con la datagridview) ma ovviamente se scrivo:

    codice:
    owner.miaDGW.rows.add
    mi dice che la miaDGW non è presente nel form (perchè in fase di compilazione non può sapere quale sia il form!

    Spero di essermi spiegata!
    Volevo sapere almeno se non ci son speranze così smetto di provare :P

  2. #2
    Potresti fare un cast della proprietà Owner:
    codice:
    Dim f As Form1 = CType(Me.Owner, Form1)
    
    f.miaDGW.rows.add
    Chi non cerca trova.

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    io mi ero limitata a un mero:

    codice:
    if owner is mioForm1 then
           mioForm1.miaDGW.row.add
    end if
    Così per tutte le "eventualià" Ora provo il tuo metodo perchè se funziona sicuramente è molto molto meglio :P

    Solo una cosa non ho capito...se metto cmq "form1" nel cast devo usare comunque l'if no?

  4. #4
    La tecnica che hai utilizzato, anche se funziona, non la ritengo corretta in quanto non aderisce alle regole di una buona programmazione ad oggetti. Anzi, per essere più precisi, si tratta di una sintassi ampiamente usata in VB6 e reintrodotta in VB.NET per facilitare le operazioni di porting di vecchi progetti.

    Va quindi benissimo il blocco If, ma all'interno dovresti fare il cast:
    codice:
    If owner Is mioForm1 Then
        Dim f As mioForm1 = CType(Me.Owner, mioForm1)
    
        f.miaDGW.Rows.Add ...
    End If
    Chi non cerca trova.

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.