Loading LettereRandom/LettereRandom/MainWindow.xaml.cs +20 −20 Original line number Diff line number Diff line Loading @@ -16,9 +16,13 @@ namespace LettereRandom /// </summary> public partial class MainWindow : Window { // Random per generare lettere casuali private Random rnd = new Random(); // Per controllare il ciclo asincrono private bool inizioCasualitàLettere = true; // Parola corrente e lunghezza massima impostate all'inizio del programma private string parolaCorrente = string.Empty; private int lunghezzaMassima = 0; Loading @@ -26,9 +30,11 @@ namespace LettereRandom { InitializeComponent(); // Avvia il ciclo asincrono InizioLoopLetere(); } // Ciclo asincrono per generare lettere casuali private async void InizioLoopLetere() { while (inizioCasualitàLettere) Loading @@ -37,12 +43,14 @@ namespace LettereRandom char letteraCasuale = (char)rnd.Next('A', 'Z' + 1); // +1 perché il secondo parametro è escluso lblLettera.Content = letteraCasuale.ToString(); await Task.Delay(100); await Task.Delay(100); // 100ms di attesa prima di generare la prossima lettera } } // Aggiunge la lettera alla parola private void Button_Click(object sender, RoutedEventArgs e) { // Controllo input if (!int.TryParse(txtLunghezza.Text, out lunghezzaMassima) || lunghezzaMassima <=0) { MessageBox.Show("La lunghezza massima della parola deve essere maggiore di 0", "Errore", Loading @@ -53,39 +61,31 @@ namespace LettereRandom return; } // Aggiunge la lettera alla parola corrente parolaCorrente += lblLettera.Content.ToString(); lbloParola.Content = parolaCorrente; AggiornaStatoTextBox(); txtLunghezza.IsEnabled = false; // Disabilita la TextBox // Se ha raggiunto la lughezza impostata... if (parolaCorrente.Length == lunghezzaMassima) { lstParole.Items.Add(parolaCorrente); lstParole.Items.Add(parolaCorrente); // aggiunge la parola alla lista parolaCorrente = string.Empty; // Resetta la parola corrente lbloParola.Content = string.Empty; // Resetta il label della parola corrente parolaCorrente = string.Empty; // e resetta la parola corrente lbloParola.Content = string.Empty; AggiornaStatoTextBox(); // Aggiorna lo stato della TextBox txtLunghezza.IsEnabled = true; // Riabilita la TextBox } } // Metodo per indicare che la textBox è modificabile solo se parolaCorrente è vuota private void AggiornaStatoTextBox() { if (parolaCorrente == string.Empty) { txtLunghezza.IsEnabled = true; // Abilita la TextBox } else { txtLunghezza.IsEnabled = false; // Disabilita la TextBox } } // Evitare che il loop continui dopo la chiusura della finestra (genererebbe eccezioni) // Metodo per evitare che il loop continui dopo la chiusura della finestra // può essere chiamato solo da dentro la stessa classe protected override void OnClosed(EventArgs e) { inizioCasualitàLettere = false; // Ferma il loop quando la finestra viene chiusa // Chiama il metodo base (dalla classe Window) per assicurarsi che tutte le risorse vengano liberate correttamente base.OnClosed(e); } } Loading Loading
LettereRandom/LettereRandom/MainWindow.xaml.cs +20 −20 Original line number Diff line number Diff line Loading @@ -16,9 +16,13 @@ namespace LettereRandom /// </summary> public partial class MainWindow : Window { // Random per generare lettere casuali private Random rnd = new Random(); // Per controllare il ciclo asincrono private bool inizioCasualitàLettere = true; // Parola corrente e lunghezza massima impostate all'inizio del programma private string parolaCorrente = string.Empty; private int lunghezzaMassima = 0; Loading @@ -26,9 +30,11 @@ namespace LettereRandom { InitializeComponent(); // Avvia il ciclo asincrono InizioLoopLetere(); } // Ciclo asincrono per generare lettere casuali private async void InizioLoopLetere() { while (inizioCasualitàLettere) Loading @@ -37,12 +43,14 @@ namespace LettereRandom char letteraCasuale = (char)rnd.Next('A', 'Z' + 1); // +1 perché il secondo parametro è escluso lblLettera.Content = letteraCasuale.ToString(); await Task.Delay(100); await Task.Delay(100); // 100ms di attesa prima di generare la prossima lettera } } // Aggiunge la lettera alla parola private void Button_Click(object sender, RoutedEventArgs e) { // Controllo input if (!int.TryParse(txtLunghezza.Text, out lunghezzaMassima) || lunghezzaMassima <=0) { MessageBox.Show("La lunghezza massima della parola deve essere maggiore di 0", "Errore", Loading @@ -53,39 +61,31 @@ namespace LettereRandom return; } // Aggiunge la lettera alla parola corrente parolaCorrente += lblLettera.Content.ToString(); lbloParola.Content = parolaCorrente; AggiornaStatoTextBox(); txtLunghezza.IsEnabled = false; // Disabilita la TextBox // Se ha raggiunto la lughezza impostata... if (parolaCorrente.Length == lunghezzaMassima) { lstParole.Items.Add(parolaCorrente); lstParole.Items.Add(parolaCorrente); // aggiunge la parola alla lista parolaCorrente = string.Empty; // Resetta la parola corrente lbloParola.Content = string.Empty; // Resetta il label della parola corrente parolaCorrente = string.Empty; // e resetta la parola corrente lbloParola.Content = string.Empty; AggiornaStatoTextBox(); // Aggiorna lo stato della TextBox txtLunghezza.IsEnabled = true; // Riabilita la TextBox } } // Metodo per indicare che la textBox è modificabile solo se parolaCorrente è vuota private void AggiornaStatoTextBox() { if (parolaCorrente == string.Empty) { txtLunghezza.IsEnabled = true; // Abilita la TextBox } else { txtLunghezza.IsEnabled = false; // Disabilita la TextBox } } // Evitare che il loop continui dopo la chiusura della finestra (genererebbe eccezioni) // Metodo per evitare che il loop continui dopo la chiusura della finestra // può essere chiamato solo da dentro la stessa classe protected override void OnClosed(EventArgs e) { inizioCasualitàLettere = false; // Ferma il loop quando la finestra viene chiusa // Chiama il metodo base (dalla classe Window) per assicurarsi che tutte le risorse vengano liberate correttamente base.OnClosed(e); } } Loading