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
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