Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[gelöst] UserControl KeyDown aktivieren?
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

Themenstarter:

[gelöst] UserControl KeyDown aktivieren?

beantworten | zitieren | melden

Hi!

Ich hab ein UserControl mit einem ItemsControl drauf und Haufen TextBlöcke und Kram. Aber nichts, was Keydowns empfängt, also keine Button, Textboxen etc..
Sonst würden ja deren KeyDowns gerouted, aber wie gesagt: hab ich nicht drauf auffm Ucl.

Gibt es irgendeine Möglichkeit das UIElement.KeydownEvent zu registrieren, oder iwas mit MetaDaten oder wasweißich, dass mein UserControl KeyDownEvents auslöst?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ErfinderDesRades am .
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Parso
myCSharp.de - Member



Dabei seit:
Beiträge: 160

beantworten | zitieren | melden

Hallo, was willst du denn mit den Key-Downs bezwecken ?
Wenn's zum weinen nicht reicht, lach drüber!
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

Themenstarter:

beantworten | zitieren | melden

ich bastel ein Sudoku, und da soll man mittm Ziffernblock Zahlen in die Zellen eingeben.
Ausserdem zw. den Zellen navigieren.
Auch auch mit Maus Zellen selecten.

Angezeigt wirds mittels eines UniformGrids, was 9 Boxen zeigt, und jede Box zeigt mittels UniformGrid, 9 Zellen.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3429
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,

versuch mal die Lösung aus WPF: Setting Keyboard Focus in a User Control? (Problems with KeyBinding)

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

Themenstarter:

beantworten | zitieren | melden

PotzBlitz - geht tatsächlich!

Der Fehl-Verständnis war, dass das ucl den Focus nicht automatisch nimmt, wenn man reinklickt. Aber das kann man ja dranprogrammieren:


      private void _uclSudoku_MouseDown(object sender, MouseButtonEventArgs e) {
         var cll = e.FindParentContext<CellVM>();
         SelectedCell = cll;
         Keyboard.Focus(_uclSudoku);
      }

      private void _uclSudoku_KeyDown(object sender, KeyEventArgs e) {
         if (_SelectedCell == null) return;
         int i = _AllCells.IndexOf(_SelectedCell);
         switch (e.Key) {
         case Key.Right:
            i += 1;
            break;
         case Key.Left:
            i -= 1;
            break;
         case Key.Up:
            i -= 9;
            break;
         case Key.Down:
            i += 9;
            break;
         default:
            return;
         }
         if (i < 0) i += _AllCells.Length;
         else if (i ≥ _AllCells.Length) i -= _AllCells.Length;
         SelectedCell = _AllCells[i];
         e.Handled = true;
      }
Und dann muss man noch beim KeyDown e.Handled setzen, sonst verlässt der Focus evtl. das Control wieder aufgrund eines Left-Tastendrucks
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers