Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Errore strano in fase di chiusura di un form
Forum - C# / VB.NET - Errore strano in fase di chiusura di un form

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
alip1 (Normal User)
Pro


Messaggi: 84
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 12:07
Lunedì, 05/07/2021
Buon giorno a tutti

Nell'evento form_closing di un form ho quest semplice istruzione
Codice sorgente - presumibilmente C# / VB.NET

  1. If Not IsNothing(Me.SCBase) Then gUserLog.PosTreeView = Me.SCBase.SplitterDistance



dove scBase è uno splitter presente nel form e con l'istruzione mi volevo salvare il valore della proprietà
Codice sorgente - presumibilmente Plain Text

  1. SplitterDistance

in modo che quando riapro il form lo splitter si trovi nella posizione in cui è stato lasciato.

La cosa funziona se ogni volta che l'utente sposta lo splitter su e giu ( è uno splitter orizzontale) memorizzo il valore, ma volevo farlo solo una volta  alla fine prima che il form venisse completamente chiuso.
Il problema che mi da errore sulla proprietà
Codice sorgente - presumibilmente Plain Text

  1. Me.SCBase.SplitterDistance

dicendomi che "Riferimento a un oggetto non impostato su un'istanza di oggetto.". Ma l'oggetto SCBASE non è nothing ed inoltre la proprietà contiene un valore numerico.. non capisco dove sta il problema. Secondo voi??
Grazie in anticipo

Ultima modifica effettuata da alip1 il 05/07/2021 alle 12:08
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6176
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:02
Lunedì, 05/07/2021
Mi sa che il tuo problema sta in

gUserLog.PosTreeView


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 84
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 13:03
Mercoledì, 07/07/2021
Testo quotato

Postato originariamente da nessuno:
Mi sa che il tuo problema sta in

gUserLog.PosTreeView


L'errore me lo da sulla proprietà splitterdistance dell'oggetto splitter SCBase mi dice che la proprietà è nothing... guserlog.postreeview è  una semplice struttura che contiene questa proprietà  ed un'altra ed entrambe hanno un valore intero aggiornabile...  

Inoltre come dicevo se lo faccio nell'evento moved dello splitter l'istruzione non da errore ma se la faccio nell'evento closing del form avviene l'errore. È come se la proprietà  fosse settabile solo nell'evento moved dello splitter...!!?? Ma la documentazione non dice così anche perché  se inverto ed assegno il valore contenuto in userlog.postreeview e l'assegno alla proprietà  in questione lo splitter si posiziona in base al valore passato... Non so proprio cosa pensare... la scocciatura sta nel fatto che mi devo salvare il valore ripetutamente ...
Grazie comunque

Ultima modifica effettuata da alip1 il 07/07/2021 alle 13:08
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6176
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:38
Mercoledì, 07/07/2021
L'unico consiglio è quello di zippare il progetto (nelle parti essenziali) e farcelo scaricare per fare il debugging (che facilmente ti direbbe la causa del problema).


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 84
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 17:17
Mercoledì, 07/07/2021
Testo quotato

Postato originariamente da nessuno:

L'unico consiglio è quello di zippare il progetto (nelle parti essenziali) e farcelo scaricare per fare il debugging (che facilmente ti direbbe la causa del problema).


Grazie ma è abbastanza grande...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6176
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:40
Mercoledì, 07/07/2021
Potresti eliminare le parti che non servono... ma se non vuoi


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 84
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 20:54
Mercoledì, 07/07/2021
Comunque ho risolto spostando tutto in una routine che chiamo quando clicco su un bottone exit del menu e così il problema è risolto e raggirato. La mia ipotesi è che nell'evento closing del form i controlli sul form non siano più utilizzabili o almeno le relative proprietà, al di là di ciò che dicono i manuali. Non so darmi un'altra spiegazione.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6176
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:18
Giovedì, 08/07/2021
Avresti avuto un'altra spiegazione se ci avessi fatto controllare il progetto


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 84
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 18:59
Giovedì, 08/07/2021
Testo quotato

Postato originariamente da nessuno:

Avresti avuto un'altra spiegazione se ci avessi fatto controllare il progetto


Ok per farlo mi limito alle cose essenziali:
Ho una classe così definita:
Codice sorgente - presumibilmente VB.NET

  1. Public Class DataUserLogCS
  2.    Private mlidAmm As Integer
  3.    Private mstLogName As String   'logon name windows access
  4.    Private mstPwd As String       ' eventuale pwd
  5.    Private mlidUser As Integer    ' = se solo Amm   diverso da 0 se anche utente dell'App
  6.    Private mflagAmm As Boolean    ' true se Amm
  7.    Private mflagAccessWindow As Boolean   'true se accesso con credenziali window
  8.  
  9.    Private mstType As String
  10.    Private miGGBeforNotification As Integer
  11.    Private midGroupDefault As Integer
  12.  
  13.    Public Property LogName As String
  14.       Get
  15.          Return mstLogName
  16.       End Get
  17.       Set(value As String)
  18.          mstLogName = value
  19.       End Set
  20.    End Property
  21.    Public Property PWD As String
  22.       Get
  23.          Return mstPwd
  24.       End Get
  25.       Set(value As String)
  26.          mstPwd = value
  27.       End Set
  28.    End Property
  29.  
  30.    Public Property idAMM As Integer
  31.       Get
  32.          Return mlidAmm
  33.       End Get
  34.       Set(value As Integer)
  35.          mlidAmm = value
  36.          flagAmm = True
  37.       End Set
  38.    End Property
  39.    Public Property idUser As Integer
  40.       Get
  41.          Return mlidUser
  42.       End Get
  43.       Set(value As Integer)
  44.          mlidUser = value
  45.          ' CaricaInGruppi()
  46.       End Set
  47.    End Property
  48.  
  49.    Public Property flagAmm As Boolean
  50.       Get
  51.          Return mflagAmm
  52.       End Get
  53.       Set(value As Boolean)
  54.          mflagAmm = value
  55.  
  56.       End Set
  57.    End Property
  58.  
  59.    Public Property flagAccessWindow As Boolean
  60.       Get
  61.          Return mflagAccessWindow
  62.       End Get
  63.       Set(value As Boolean)
  64.          mflagAccessWindow = value
  65.  
  66.       End Set
  67.    End Property
  68.  
  69.    Public Property GGBeforeNotification As Integer
  70.       Get
  71.          Return miGGBeforNotification
  72.       End Get
  73.       Set(value As Integer)
  74.          miGGBeforNotification = value
  75.       End Set
  76.    End Property
  77.  
  78.    Public Property IdGroupDefaul As Integer
  79.       Get
  80.          Return midGroupDefault
  81.       End Get
  82.       Set(value As Integer)
  83.          midGroupDefault = value
  84.       End Set
  85.    End Property
  86.  
  87.    Public Sub New()
  88.       flagAmm = False
  89.       idUser = 0
  90.    End Sub
  91. End Class



quindi una variabile pubblica così  definita:
Codice sorgente - presumibilmente C# / VB.NET

  1. '************** Data USER LOGGATO **********
  2.    Public gUserLog As DataUserLogon



quindi la semplice istruzione:
Codice sorgente - presumibilmente Plain Text

  1. gUserLog.PosTreeView = SCBase.SplitterDistance

nell'evento closing
Codice sorgente - presumibilmente VB.NET

  1. Private Sub frmMainContratti_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing

del form...

Negli altri form e routine la variabile non viene più utilizzatasalvo che il  valore di gUserLog.PosTreeView  viene letto da un file di testo nel Main dell'App e riscritto nello stesso file alla chiusura dell'Appplicazione ,,, ma queste due operazioni funzionano.



Ultima modifica effettuata da alip1 il 08/07/2021 alle 19:01
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo