Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - modifica riferimenti forms
Forum - C# / VB.NET - modifica riferimenti forms

Avatar
gnapolitano@teletu.it (Normal User)
Newbie


Messaggi: 14
Iscritto: 20/06/2020

Segnala al moderatore
Postato alle 18:40
Sabato, 20/06/2020
Ho un form (frmAperturaPratica),che da un buttone apre un altro form (frmHelpEnti) e dal quale seleziono una delle opzioni presenti in una list box.
La voce selezionata viene poi acquisita dal primo form (frmAperturaPratica) nel seguente modo:
Codice sorgente - presumibilmente Plain Text

  1. frmAperturaPratica.ente.Text = ListBox1.SelectedItem.substring(0, 1)
  2.      frmAperturaPratica.ente_desc.Text = ListBox1.SelectedItem.substring(2)
  3.      ecc.


Il probema ora è che devo richiamare frmHelpEnti anche da un altro form : frmChiusuraPratica,ma non so come sostituire i riferimenti "frmAperturaPratica.ente.Text = ListBox1.SelectedItem.substring(0, 1)" con "frmChiusuraPratica.ente.text ecc.".

Mi aiutate,considerando che ho limitate conoscenze di vb net?

Grazie comunque.

Ultima modifica effettuata da gnapolitano@teletu.it il 20/06/2020 alle 18:45
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 20:06
Sabato, 20/06/2020
Testo quotato

Postato originariamente da gnapolitano@teletu.it:

Il probema ora è che devo richiamare frmHelpEnti anche da un altro form : frmChiusuraPratica,ma non so come sostituire i riferimenti "frmAperturaPratica.ente.Text = ListBox1.SelectedItem.substring(0, 1)" con "frmChiusuraPratica.ente.text ecc.".

Mi aiutate,considerando che ho limitate conoscenze di vb net?

Grazie comunque.



In che form sta ListBox1? se sta in frmHelpEnti lo devi aggiungere prima di listBox1

Codice sorgente - presumibilmente Plain Text

  1. frmChiusuraPratica.ente.Text = frmHelpEnti.ListBox1.SelectedItem.substring(0, 1)


Ultima modifica effettuata da Carlo il 20/06/2020 alle 20:07


in programmazione tutto è permesso
PM Quote
Avatar
gnapolitano@teletu.it (Normal User)
Newbie


Messaggi: 14
Iscritto: 20/06/2020

Segnala al moderatore
Postato alle 21:10
Sabato, 20/06/2020
Grazie,Carlo.
ListBox1 sta in frmHelpEnti, che è il form attivo.
Penso però di aver risolto:
Codice sorgente - presumibilmente VB.NET

  1. Module Module1
  2.     Dim nomeForm As String
  3.     Public Property FormName() As String
  4.         Get
  5.             Return nomeForm
  6.         End Get
  7.         Set(ByVal Value As String)
  8.             nomeForm = Value
  9.         End Set
  10.     End Property
  11. End Module



Poi,sia in frmAperturaPratica che in frmChiusuraPratica ,nell'evento load trasferisco il nome del form chiamante:
Codice sorgente - presumibilmente Plain Text

  1. FormName = sender.name



Infine,in frmHelpEnti ho scritto :
Codice sorgente - presumibilmente VB.NET

  1. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
  2.         If FormName = "frmAperturaPratica" Then
  3.             frmAperturaPratica.TextBox1.Text = ListBox1.SelectedItem
  4. ecc.
  5.         ElseIf FormName = "frmChiusuraPratica" Then
  6.             frmChiusuraPratica.TextBox2.Text = ListBox1.SelectedItem
  7. ecc.
  8.         End If
  9.     End Sub




Forse sarà possibile semplificare, ma funziona.
Grazie comunque per il tuo intervento.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 10:58
Domenica, 21/06/2020
Dal codice mi sembra di aver capito che se frmHelpEnti, lo hai aperto da frmAperturaPratica, vuoi che al cambio di selezione su Listbox1, venga aggiornata la textbox1 che sta su frmAperturaPratica. Se invece frmHelpEnti, lo hai aperto da frmChiusuraPratica, vuoi aggiornare la textbox2 che sta su frmChiusuraPratica.

Va bene quello che hai fatto, ma era sufficiente usare il .Tag
Subito dopo l'apertura di frmHelpEnti da frmAperturaPratica, metti frmHelpEnti.Tag = 1
Subito dopo l'apertura di frmHelpEnti da frmChiusuraPratica, metti frmHelpEnti.Tag = 2

gestirei anche la chiusura del form frmAperturaPratica

Codice sorgente - presumibilmente VB.NET

  1. Private Sub frmAperturaPratica _FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
  2.     frmHelpEnti.Tag = 0
  3. End Sub



e la chiusura del form frmChiusuraPratica

Codice sorgente - presumibilmente VB.NET

  1. Private Sub frmChiusuraPratica _FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
  2.     frmHelpEnti.Tag = 0
  3. End Sub




poi come già hai fatto in frmHelpEnti scrivi:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
  2.         If frmHelpEnti.Tag = 1 Then
  3.             frmAperturaPratica.TextBox1.Text = ListBox1.SelectedItem
  4. ecc.
  5.         ElseIf frmHelpEnti.Tag = 2 Then
  6.             frmChiusuraPratica.TextBox2.Text = ListBox1.SelectedItem
  7. ecc.
  8.         ElseIf frmHelpEnti.Tag = 0 Then
  9.             msgbox("nessun form pratica aperto")
  10.  
  11.         End If
  12. End Sub



Nel .Tag puoi mettere anche il nome del form o quello che vuoi
Anche se procedi diversamente e non ho perfettamente capito la sequenza dell'apertura dei form, ricorda che nel tag puoi depositare info utili come fosse una variabile pubblica globale.
Il Tag è una proprietà presente su tutti gli strumenti, non solo nel Form.

Ultima modifica effettuata da Carlo il 21/06/2020 alle 22:10


in programmazione tutto è permesso
PM Quote
Avatar
gnapolitano@teletu.it (Normal User)
Newbie


Messaggi: 14
Iscritto: 20/06/2020

Segnala al moderatore
Postato alle 19:23
Domenica, 21/06/2020
La tua soluzione è ottima.
La sfrutterò certamente in qualche altra occasione.
Pensare che utilizzavo spesso tag in Access!
Molte grazie,Carlo.

PM Quote