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 - c# problema getter setter
Forum - C# / VB.NET - c# problema getter setter

Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 12:36
Martedì, 11/07/2023
Ciao

Da una form chiamo una classe esterna e cerco di ottenere dei dati tramite il Getter.
Posto parte del codice:


-Form1:
Codice sorgente - presumibilmente C# / VB.NET

  1. private void Recall(object sender, EventArgs e)
  2.         {
  3.             PSNR Psnr = new PSNR("", "", "",0);
  4.             textBox1.Text += (Psnr._Duration);
  5.         }



-Classe esterna:
Codice sorgente - presumibilmente C#

  1. namespace Check
  2. {
  3.   class PSNR
  4.     {
  5.         int Progress, Duration;
  6.  
  7.          public PSNR(string FFBackPath2, string Analizer, string path, int cmd)
  8.          {
  9.              Duration = 1000;
  10.           }
  11.  
  12.        public int _Duration
  13.         {
  14.             get => Duration;
  15.         }
  16. }



Mi sarei aspettato di stampare nella textbox1 il valore  Duration a 1000 ma rimane a 0.
Non capisco dov'è l'errore.

Grazie anticipatamente

Ultima modifica effettuata da Thejuster il 11/07/2023 alle 12:43
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2252
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:50
Martedì, 11/07/2023
textBox1.Text += (Psnr._Duration);


_Duration è di tipo intero, ed aggiungere += al testo non ha senso.

Dovresti fare

Codice sorgente - presumibilmente Plain Text

  1. textBox1.Text = Convert.ToString(Convert.ToInt16(textBox1.Text) + Convert.ToInt16(Psnr._Duration));




Non esiste una funzione += per il tipo string.
A meno chè non fai un override sull'operatore.

quindi devi convertire prima in intero i valori e poi settarli al textbox.

successivamente, consiglio di aggiungere anche il SET alla proprietà _Duration.
va bene anche private set, ma aggiungilo.

      

Ultima modifica effettuata da Thejuster il 11/07/2023 alle 12:57


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6334
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:20
Martedì, 11/07/2023
Siamo alle basi delle basi

Non si scrive codice senza avere studiato almeno le nozioni elementari

Ultima modifica effettuata da nessuno il 11/07/2023 alle 13:21


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
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 14:12
Martedì, 11/07/2023
Grazie per l'aiuto

Ho aggiunto += per aggiungere testo alla TextBox in coda e sembra funzioni.

Volevo fare una domanda per voi Banale:
se nella Classe esterna scrivo codice asincrono, cioè che va senza fermare il Form principale usando magari backgroundWorker,
ad esempio un contatore, come faccio a catturare il valore del contatore e stamparlo nella TextBox della Form principale?

E' solo un esempio per studio, nessun lato pratico.



NISCIUNO NASCE ‘MPARATO

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1198
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 15:17
Martedì, 11/07/2023
Testo quotato

Postato originariamente da fosforo:
Volevo fare una domanda per voi Banale:
se nella Classe esterna scrivo codice asincrono, cioè che va senza fermare il Form principale usando magari backgroundWorker,
ad esempio un contatore, come faccio a catturare il valore del contatore e stamparlo nella TextBox della Form principale?

E' solo un esempio per studio, nessun lato pratico.



In BackgrounWorker puoi attivare l'evento DoWork:
Codice sorgente - presumibilmente C#

  1. private BackgroundWorker Worker = new BackgroundWorker(); // Worker lavorerà in asincrono
  2. ...
  3. ...
  4.  
  5. Worker.DoWork += Worker_DoWork; // attiva l'evento DoWork
  6. Worker.RunWorkerCompleted += Worker_RunWorkerCompleted; // attiva l'evento RunWorkerCompleted
  7.  
  8. ...
  9. ...
  10.  
  11. private void Worker_DoWork(object sender, DoWorkEventArgs e) // ti interessa
  12. {
  13.     // in e.Result si può restituire qualsiasi oggetto
  14.     // in e.Argument c'è l'argomento passato da: Worker.RunWorkerAsync(...);
  15. }



Se un esempio concreto ti può essere d'aiuto, fai una domanda specifica, qui sarebbe fuori tema.

Ultima modifica effettuata da Carlo il 12/07/2023 alle 10:04


in programmazione tutto è permesso
PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 15:21
Martedì, 11/07/2023
Grazie

PM Quote