Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132

    Abilita/disabilita Form

    Ciao a tutti ho un problema con la gestione delle form di VB.NET
    Ho 2 form: Form1 e setTime
    il Form1 dal suo menù si disabilita Me.Fom1.Enabled = False e apre la setTime dove l'utente inserisce dei dati che, una volta calcolati, devono essere passati alla Form1, sempilce?!?!?!!!
    ............... i dati non passano e Form1 non subisce eventi
    ho provato con:
    Dalla Form1
    codice:
      Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
            Dim setTime As New setTime
            setTime.Show()
            Me.Enabled = False
        End Sub
    Da setTime
    codice:
    Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
            Dim Form1 As Form1
            Form1.Enabled = True
            Me.Close()
        End Sub
    così non fa niente


    Da setTime
    codice:
    Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
            Dim Form1 As Form()
            Form1.Enabled = True
            Me.Close()
        End Sub
    così mi da errore "Form1.Enabled = True"
    codice:
    Eccezione non gestita di tipo "System.NullReferenceException" in cpf.exe
    
    Informazioni aggiuntive: Riferimento a un oggetto non impostato su un'istanza di oggetto.
    Aiutooooooooooooooooooo
    grazie
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Non esiste alcuna istruzione che copia o rimanda i dati al form chiamante (Form1)... non mi stupisce quindi che ciò non avvenga.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    Scusa ho postato la base delle prove....

    codice:
     Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
            Dim prova1 As New Form1
            prova1.cpyEsito.Text = "aaaa"
        End Sub
    così anche se il form1 è abilitato non passa niente.




    nel frattempo mi sono reso conto che se disabilito il form1
    come da esempi precedenti
    dalla form2 non sono in grado di riabilitarlo!


    Dalla FORM1
    codice:
     Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
            Dim setTime As New setTime
            setTime.Show()
            Me.Enabled = False
        End Sub
    Dalla FORM2
    codice:
     Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
            Dim prova1 As New Form1
            prova1.Enabled = True        
        End Sub


    però se lo rendo invisibile posso renderlo visibile?!?!?!


    Dalla FORM1
    codice:
     Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
            Dim setTime As New setTime
            setTime.Show()
            Me.Visible = False
        End Sub
    Dalla FORM2
    codice:
     Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
            Dim prova1 As New Form1
            prova1.Visible = True        
        End Sub


    aiuto, suggerimenti, una corda.....

    sono agli inizi perdono :master:
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Tra abilitazioni e disabilitazioni, mostra e nascondi, creazioni e visualizzazioni, io non ci sto capendo molto.

    In soldoni, cos'è che devi materialmente implementare all'interno della tua applicazione?
    Cosa deve fare esattamente il tuo programma?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    ok ho fatto un pò di casino
    dunque l'applicazione deve fare un confronto di due file ogni tot di tempo definito dal''utente.

    la parte di apertura e controllo dei file ed il timer(mi hai risp. in questi giorni sull'evento Tick) delle copie adesso funzionano grazie, se ti interessa ti posto il codice.

    adesso quello che stò cercando di fare è che le impostazioni "temporali" vengano inserite dall'utente in un form(Form2) diverso dal primo(form1).
    quello di cui ho bisogno è:

    [list=1][*]quando apro la form2 la form1 si disabiliti[*]ad un evento della form2 la form1 si riabiliti[*]venissero passati i dati alla form1[*]che la form2 si chiudesse.[/list=1]

    1. ho trovato il Metodo Form.ShowDialog che risponde alle mie esigenze, ossia impedire all'utente di manipolare i due form.

    2. se uso il metodo Enable sulla form1, dalla form2 non riesco a riabilitarlo, ma usando ShowDialog....

    3. non riesco a passare i dati!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    dalla form2 aperta con ShowDialog()
    codice:
     Private Sub setTime_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim Form1 As New Form1
    Form1.tmpnum.Text = "8"
    end sub
    4.all'evento si chiude...


    per alka
    ti ringrazio molto per l'aiuto, in questi giorni mi hai dato suggerimenti molto utili.
    sono le mie prime esperienze in VB.NET


    per tutti
    grazie a tutti
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Secondo me, il "giochicchiare" con le proprietà Enabled è sostanzialmente inutile nel tuo caso.

    Per visualizzare una finestra senza che sia possibile accedere a quella sottostante fino a quando non viene chiusa quella appena aperta è sufficiente usare il metodo ShowDialog; questo fa sì che il form su cui viene invocato il metodo sia "modale" e faccia quanto descritto.

    Quando si chiude il form modale con il metodo Close, il controllo torna nelle mani del form chiamante che può accedere ai membri del secondo form per ispezionare i dati specificati.

    Esiste una discussione segnalata in rilievo che spiega come imbastire una struttura elementare di questo tipo, anche se in linguaggio C#, benché non debba essere così difficile interpretarla e riadattarla a VB.NET.

    Leggi qui.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    grazie ho letto, il concetto mi sembra chiaro, ma ho dei dubbi sulla sintassi.

    codice:
    // Assegno al campo il riferimento all'istanza corrente di Form1
                frm.form1Reference = this;
    
    this; è una parola chiave c#?!?
    che sintassi uso in .NET??

    ho provato così nella form1
    codice:
            setTime.tmpnum2.Text = ""
    che è il campo sulla Form2

    nella form2
    codice:
    Dim Form1 As New Form1
    Form1.tmpnum.text = tmpnum2.text
    che è il campo sulla Form1
    niente
    -----------------------------------------------------------------------
    e così
    nella form1 ho dichiarato
    codice:
        Public pppp As String
    nella form2
    codice:
     Dim Form1 As New Form1
            Form1.pppp = "2"
    nada....


    ...................
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  8. #8
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    altre prove
    FORM1
    codice:
    Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
                 Dim setTime As New setTime
            setTime.tmpnum2.Text = "3"
            setTime.variabilePubblica = "4"
        End Sub
    FORM2
    codice:
        Public variabilePubblica As String
    
     Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click        Me.tmpnum2.Text = variabilePubblica
            Dim Form1 As New Form1
            Form1.tmpnum.Text = variabilePubblica 
            Me.Close()
        End Sub
    la variabile si valorizza ma non passa al form
    stò pensado di cercare di intercettare l'evento di chiusura del form2, non so come si fa, ma cercherò

    comunque qualsiasi suggerimento a proposito del passaggio dati

    grazie
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    La parola chiave this in C# rappresenta l'istanza, l'oggetto su cui si sta operando all'interno del metodo invocato. In VB.NET si traduce con Me.

    A parte questo, credo tu stia facendo parecchia confusione su quelli che sono i principi fondamentali della programmazione ad oggetti che è (quasi) indispensabile conoscere per poter utilizzare correttamente VB.NET, C# e la maggior parte dei linguaggi che supportano il .NET Framework di Microsoft.

    Ovviamente, si tratta di nozioni che vanno imparate prima di buttarsi nella realizzazione di un progetto, già il durante è un rischio (come puoi vedere dalle difficoltà che incontri).

    Innanzitutto, non userei per le variabili lo stesso nome della classe, soprattutto con un linguaggio come VB.NET che è "case insensitive".

    La soluzione per accedere al contenuto di una finestra secondaria una volta che questa è stata chiusa è molto semplice: si crea il form secondario istanziandone l'oggetto

    codice:
    Dim Frm As SecondForm
    Frm = New SecondForm()
    In seguito, si invoca il metodo ShowModal usando il riferimento (contenuto nella variabile locale) al form appena creato

    codice:
    Frm.ShowModal()
    In qualsiasi momento è possibile accedere ai controlli del form che sono campi della classe creata

    codice:
    If Frm.SomeTextBox.Text = "..." Then
        ' ...
    End If
    Se hai dei preconcetti derivanti da VB6, dimenticali.

    Se non ti è ben chiaro cosa faccia il codice sopra riportato, documentati adeguatamente, altrimenti ti sarà impossibile affrontare qualsiasi problematica si presenti nel corso della realizzazione del tuo programma.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  10. #10
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    effettivamente per me è un mondo nuovo, ho uno splendido manuale di balena di 1167 pag. e mi piace partire in quarta!
    in oltre leggendo e basta spesso faccio fatica a imparare siccome mi è stato posto un problema ho pensato di provare ad avvicinarmi al .NET con questo obbiettivo, approfittando delle ferie per studiare.

    comunque tra i suggerimenti postati da te, alka,in questo 3d e cercado nel forum ho trovato una tua risposta che mi ha chiarito le idee

    adesso farò un pò di prove

    grazie
    ciao
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

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.