myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE7
   » Gadget für Vista
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» dotnetjob.de
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und Silverlight » kann man den Fokus löschen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

kann man den Fokus löschen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Hans_Rakete
myCSharp.de-Mitglied

Dabei seit: 23.04.2011
Beiträge: 178


Hans_Rakete ist offline

kann man den Fokus löschen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ein Stapel ToggleButtons kann IsChecked = true gesetzt werden wenn man mit der gedrückten Maustaste darüber fährt (Verwandtes Thema:  ToggleButton aktivieren ohne ClickEreignis).

Nun funktioniert folgendes gut:

XML-Code:
  <StackPanel>
            <ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
            <ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
            <ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
            <ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
            <ToggleButton Content="hier" MouseEnter="OnMouseEnterHandler1"/>
        </StackPanel>

EventHandler:

C#-Code:
void OnMouseEnterHandler1(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                ToggleButton absender = e.Source as ToggleButton;
                absender.IsChecked = true;
            }
        }

... aber nur wenn die gedrückte Maustaste aus einem Bereich kommt der nicht auf einem der ToggleButtons liegt. Beginnt man nun mit dem Drücken und ziehen des Mauszeigers über einem der ToggleButtons funktioniert die Lösung nicht, die weiteren TBs werden nicht aktiviert.

Der Grund dafür ist vermutlich der noch aktive Fokus des ToggleButtons auf dem gestartet wurde, damit werden alle anderen nicht aktiviert beim überfahren mit der Maus.
Ist dieser Grund richtig? Kann man das lösen, ist es möglich den Fokus beim verlassen eines Elements zu löschen?
22.04.2012 12:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
talla talla ist männlich
myCSharp.de-Team (Moderation)

images/avatars/avatar-3214.jpg


Dabei seit: 20.07.2003
Beiträge: 6.863
Entwicklungsumgebung: VS 2010
Herkunft: Esslingen


talla ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

den Fokus kann man nicht löschen, man kann ihn höchstens einem anderen Element geben, weil irgendetwas muss immer den Focus haben. Das ist hier aber nicht die Ursache. Der Grund ist das Mouse Capturing. Wenn du Left drückst und dann zu einem anderen Button verschiebst, ist das im Prinzip ne Drag Operation. Damit das richtig funktioniert, bzw. Elemente wo man dann rüberfährt nicht falsche Mouseevents bekommen, hat sozusagen immer noch das Ausgangselement die Mouse. Siehe  hier in der MSDN dazu.
22.04.2012 13:35 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Hans_Rakete
myCSharp.de-Mitglied

Dabei seit: 23.04.2011
Beiträge: 178

Themenstarter Thema begonnen von Hans_Rakete

Hans_Rakete ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Talla,

vielen Dank für die Antwort.
demnach müsste ich also mit releaseMouseCapture() arbeiten!?

Wo genau kann ich diesen Befehl nun aber unterbringen damit er ausgelöst wird, werden doch die EventHandler wie MouseLeave nicht bedient aus angeführtem Grund.

Im Code prüfen ob die Maus noch über dem Objekt ist?

Vielen Dank für Hinweise.
22.04.2012 16:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2013 myCSharp.de-Team. Alle Rechte vorbehalten. 24.05.2013 14:39