• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
slider controllo da acquisire valore

Acquisire valore da controllo slider
#1
Ciao a tutti.
Non riesco ad assgnare ad una variabile tipo int
il valore di uno slider dopo che è stato usato.
sotto le righe che mi danno errore.
Codice:
       private void slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
       {
           Tempo_Rosso_2 = slider.Value;
       }
Visual Basic 2015 mi sottolinea in rosso slider.Value

Dove sbaglio?
Risposta
#2
Domanda, allo Slider hai dato un nome con il tag x:Name="NomeControllo" ?
In XAML i controlli non vengono 'battezzati' in automatico con un nome, è il programmatore che deve assegnarne uno.
Comunque sia, nel tuo caso, non dovrebbe essere necessario.
Prova a modificare il tuo codice nel seguente modo:
Codice:
private void slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
   var mySlider = sender as Slider;
   if(mySlider == null)
       return;
   Tempo_Rosso_2 = mySlider.Value;
}

Praticamente l'oggetto che scatena l'evento ValueChanged è 'sender' solo che devi fare un cast al tipo specifico, inquesto caso al controllo Slider, in questo modo potrai accedere alle sue proprietà.

PS: Lunedì dovrebbe arrivarmi il nuovo Raspberry, a quel punto penso di iniziare a provare direttamente anch'io Win10 IoT così, forse Blush , posso darti dritte più precise Tongue
Risposta
#3
Molto bene.
Ho provato le tue righe ma non vanno. VB 2015 mi sottolinea in rosso sempre mySlider.Value;
Codice:
private void slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
  var mySlider = sender as Slider;
  if(mySlider == null)
      return;
  Tempo_Rosso_2 = mySlider.Value;
}
Ora segui i punti sotto:
1- Allora invece di assegnare il vaolre ad una variabile
ho inserito una textblok e con lo stesso procedimento ho assegnato al testo
della textblock il myslider.value.ToString();
Codice:
private void slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
  var mySlider = sender as Slider;
  if(mySlider == null)
      return;
  textBlock.Text = mySlider.Value.ToString();
}
Vb 2015 non mi sottolinea nulla, quindi compilo e controllo il risultato.
l'applicazione parte, ma se muovo lo slider la textblok non cambia.
2- Provo quindi a togliere questa condizione dalle tue righe
Codice:
private void slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
  var mySlider = sender as Slider;

  textBlock.Text = mySlider.Value.ToString();
A questo punto la text blok varia al variare dello slider.
3- Mi viene quindi il dubbio che il problema stia nel tipo di variabile che uso "int",
penso che forse la variabile deve essere a virgola mobile.
Provo ad usare allora stesso nome di variabile "Tutto_Rosso_2" ma di tipo "double"
Nessun errore dal compilatore.
Compilo, controllo, ora funziona tutto.
Anche con il codice iniziale
Codice:
private void slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
       {
           Tempo_Rosso_2 = slider.Value;
       }
Insomma il problema stava tutto nel tipo di variabile.
P.S. Provato con variabile di tipo float (sempre virgola mobile) ma non va.
Stesso discorso per variabile di tipo decimal, non va.

E ora.....
Grazie davvero.
... ma ne avrò ancora da chiedere...
Ciao ciao
Risposta
#4
Sinceramente mi sono un po' perso nei tuoi giri Big Grin
Quando perli di VB2015 probabilmente intendi Visual Studio (VS) e non Visual Basic (VB), corretto?

In teoria Visual Studio, quando ti evidenzia un errore, andando con il mouse sopra la parte 'sottolineata' dovrebbe visualizzarti una descrizione relativa al tipo di errore riscontrato, nel tuo caso sarebbe un problema di Cast, ovvero conversione di tipi di dati differenti.

Sinceramente credo che il metodo migliore per aggiornare un elemento grafico, e viceversa una variabile nel codice, sia quello di sfruttare la potenza del binding offerto da WPF/XAML (e le Universal App derivano ed estendono queste potenzialità).
Purtroppo il mio Rasp non arriverà sino a Giovedì (stando al tracking di Amazon), quindi non posso fare molte prove (anche se sto pensando di preparare una seconda SD da installare nel rasp che attualmente ho perennemente acceso a fare da serverino di download.

Se ho modo di configurare il tutto (e soprattutto ho tempo Tongue ) voglio provare a fare il tuo stesso esempio ma, se possibile, mettendo in pratica il pattern MVVM molto usato, e per certi versi comodo, in WPF/XAML. Se il tutto sta in piedi posso poi aggiornarti, in questo thread, su come ho risolto i tuoi problemi di aggiornamento variabili/controlli.
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect