none
Slider ValueChanged... RRS feed

  • Frage

  • Hi,

    ich habe ein kleines Problem. Es gibt beim Slider ein Event Namens ValueChanged.

    Dieses Event wird ausgelöst wenn entweder der Wert Programmatisch geändert wird, oder auch durch den User selbst.

    Mein Problem ist, ich mache beides. Per WCF wird von meiner gehosteten Anwendung auf dem Desktoprechner die Aktuelle Lautstärke geholt. Wenn aber der User gleichzeitig den Slider bewegt, dann habe ich natürlich ein "zittern".

    Vielleicht ist es auch schon einfach "zu spät" und ich sollte mal Feierabend machen, aber ich versuche seit über einer Stunde das "zittern" zu verhindern.

    Frage: Gibt es eine Möglichkeit abzufragen, WIE der Wert geändert wurde? Also ob der User gerade mit einem Finger/Maus den Slider bewegt/hält?

    Gruß
    Andy

    Dienstag, 17. Dezember 2013 19:12

Antworten

  • Hallo,
    ich würde in diesem Fall einen Wert beim programmatischen setzen der Eigenschaft festlegen, der im ValueChanged-Ereignis ausgelesen wird. Dadurch kannst du es dann unterscheiden. Nachfolgend ein kleines Beispiel dazu:
    private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        if (!progChanged)
            MessageBox.Show(e.NewValue.ToString());//Neuen Wert nur anzeigen, wenn Benutzer diesen änderte
        progChanged = false;//Änderung wurde verarbeitet
    }
    bool progChanged = false;
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        progChanged = true;//Änderung erfolgt durch programm
        sl.Value = 1;//Wert testweise setzen
    }


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert AndreasMahub Mittwoch, 18. Dezember 2013 05:34
    Dienstag, 17. Dezember 2013 19:27

Alle Antworten

  • Hallo,
    ich würde in diesem Fall einen Wert beim programmatischen setzen der Eigenschaft festlegen, der im ValueChanged-Ereignis ausgelesen wird. Dadurch kannst du es dann unterscheiden. Nachfolgend ein kleines Beispiel dazu:
    private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        if (!progChanged)
            MessageBox.Show(e.NewValue.ToString());//Neuen Wert nur anzeigen, wenn Benutzer diesen änderte
        progChanged = false;//Änderung wurde verarbeitet
    }
    bool progChanged = false;
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        progChanged = true;//Änderung erfolgt durch programm
        sl.Value = 1;//Wert testweise setzen
    }


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert AndreasMahub Mittwoch, 18. Dezember 2013 05:34
    Dienstag, 17. Dezember 2013 19:27
  • Guten Morgen Tom,

    sorry, war gestern einfach zu müde :-)

    Danke! Der Tipp funktioniert, kein "zittern" mehr :-)

    Gruß
    Andy

    Mittwoch, 18. Dezember 2013 05:35