Oppure

Loading
11/07 10:36
fosforo
Ciao

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


-Form1:
private void Recall(object sender, EventArgs e)
        {
            PSNR Psnr = new PSNR("", "", "",0);
            textBox1.Text += (Psnr._Duration);
        }



-Classe esterna:
namespace Check
{
  class PSNR
    {
        int Progress, Duration;

         public PSNR(string FFBackPath2, string Analizer, string path, int cmd)
         {
             Duration = 1000; 
          }

       public int _Duration
        {
            get => Duration;
        }
}


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 11/07 10:43
aaa
11/07 10:50
Thejuster
textBox1.Text += (Psnr._Duration);


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

Dovresti fare


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 11/07 10:57
mire.forumfree.it/ - Mire Engine
C# UI Designer
11/07 11:20
nessuno
Siamo alle basi delle basi

Non si scrive codice senza avere studiato almeno le nozioni elementari
Ultima modifica effettuata da nessuno 11/07 11: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à.
11/07 12:12
fosforo
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
aaa
11/07 13:17
Carlo
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:
private BackgroundWorker Worker = new BackgroundWorker(); // Worker lavorerà in asincrono
...
...

Worker.DoWork += Worker_DoWork; // attiva l'evento DoWork
Worker.RunWorkerCompleted += Worker_RunWorkerCompleted; // attiva l'evento RunWorkerCompleted

...
...

private void Worker_DoWork(object sender, DoWorkEventArgs e) // ti interessa
{
    // in e.Result si può restituire qualsiasi oggetto
    // in e.Argument c'è l'argomento passato da: Worker.RunWorkerAsync(...); 
}


Se un esempio concreto ti può essere d'aiuto, fai una domanda specifica, qui sarebbe fuori tema.
Ultima modifica effettuata da Carlo 12/07 8:04
in programmazione tutto è permesso
11/07 13:21
fosforo
Grazie
aaa