Hallo zusammen
Ich möchte das bei einem TextBlock Control, wenn ich mit dem Cursor drüber fahre automatisch der MouseCursor wechselt (auf Cursors.IBeam). Beim "Verlassen" des TextBlocks soll der MouseCursor wieder zurück wechseln (auf Cursors.Arrow).
Irgendwie kriege ich das nicht hin, es wechselt zwar beim "drüberfahren" aber beim "verlassen" des Feldes wird der Event nicht ausgelöst. Welchen Event soll ich da verwenden ? LostFocus() scheint nicht der richtige zu sein ? Geht das allenfalls viel einfacher ?
Danke für eure Tipps
private void txtTest_MouseMove(object sender, MouseEventArgs e)
{
Mouse.OverrideCursor = Cursors.IBeam;
}
private void txtTest_LostFocus(object sender, RoutedEventArgs e)
{
Mouse.OverrideCursor = Cursors.Arrow;
}
Hallo Philb,
du musst das setzen / rücksetzen vom Cursor nicht selbst managen.
Einfacher ist es wenn du deinem TextBlock (oder dem Container der den TextBlock enthält) den Cursor setzst.
Dann bleibt der Rest der Anwendung ganz normal und sobald der Mauszeiger sich über diesem Element befindet wird dieser in IBeam umgestellt.
Guck mal hier: How to: Change the Cursor Type
Gruss
Michael
Danke für die Info. Du meinst so
<TextBox Cursor="IBeam" .... >
Das geht leider auch nicht. Wenn ich drüber fahre oder reinklicke, wechselt der Cursor nicht.
Hallo Philb,
der Standard-Cursor von der TextBox ist schon IBeam deshalb merkst du keinen Unterschied wenn du ihn selbst nochmals auf IBeam setzst.
Probiere mal das hier dann wirst du sehe dass es funktioniert
<Window ....>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Cursor="Help" Background="Red"/>
<Border Grid.Column="1" Cursor="Hand" Background="Blue"/>
</Grid>
</Window>
Gruss
Michael
Das tut auch nicht. Der Cursor bleibt unverändert.
Hat es allenfalls mit einem Style zu tun ? Ich verwende bei allen UI Forms ein Style Theme als ResourceDictionary. Dort habe ich aber nicht explizit ein Cursor Property zu den jeweiligen Controls gesetzt.
Hallo Philb,
Das gibt es doch nicht..
Erstelle mal ein neues Projekt und kopiere den Code so rein wie er ist.
Ich habe das jetzt getestet und das funktioniert bei mir jedenfalls ohne Probleme.
Sobald ich über die TextBox fahre kommt das Help symbol und über dem Border kommt die Hand.
Du redest schon auch vom Maus-zeiger? Oder gibt es da ein Missverständnis?
Hat es allenfalls mit einem Style zu tun ?
Keine Ahnung was du für einen Style hast, aber das glaube ich eher nicht.
Entferne doch mal einfach testweise den Style dann wirst du schon sehen woran es liegt.
Gruss
Michael
Erstelle mal ein neues Projekt und kopiere den Code so rein wie er ist.
Ich habe das jetzt getestet und das funktioniert bei mir jedenfalls ohne Probleme.
ok, wenn ich ein komplett neues Window erstelle und deinen Code verwende, dann tut's. Aber auf meinem Form mit diversen anderen UserControls drauf funktioniert's nicht. Was könnte da noch "reinfunken" ?
Bitte keine Full-Quotes: [Hinweis] Wie poste ich richtig? 2.3
Hallo,
es ist so sehr schwierig zu sagen woran das liegt.
Hast du dein ganzes GotFocus / LostFocus Gebastle aus deiner Codebehind entfernt, denn vielleicht macht das dabei die Probleme.
Ansonsten musst du einfach versuchen Teile vom Programm auszukommentieren um das Problem genauer lokalisieren zu können.
Evtl. die Styles entfernen und dann nochmals testen.
Mehr kann ich dir da ohne weitere Details nicht sagen.
Gruss
Michael
Leider ging's nicht, ich hab's jetzt so gelöst
private void Control_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
if (sender is xyz)
{
Mouse.OverrideCursor = Cursors.AppStarting;
}
}
private void Control_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
{
if (sender is xyz)
{
Mouse.OverrideCursor = Cursors.Arrow;
}
}
so funktioniert's 😃