Laden...

System.Windows.Input: Wieso wird enum Key nicht erkannt ?

Erstellt von cprogrammer vor 13 Tagen Letzter Beitrag vor 13 Tagen 200 Views
c
cprogrammer Themenstarter:in
68 Beiträge seit 2023
vor 13 Tagen
System.Windows.Input: Wieso wird enum Key nicht erkannt ?

using System.Windows.Input;

public override bool ProcessKeyDown(KeyEventArgs e)
       {
  
           if (e.Key == 38)
           {

           }
           return true;
               
       }

Der Compiler meckert, dass er Key nicht kennt und dies angeblich in WindowsBase vorhanden sei.

WindowsBase ist aber nicht Teil meiner Assemblies, dafür aber System.Windows.Input, und dies definiert doch enum Key.

https://learn.microsoft.com/de-de/dotnet/api/system.windows.input.key?view=windowsdesktop-7.0

Woran kann das liegen ?

2.057 Beiträge seit 2012
vor 13 Tagen

"Key" ist ein Enum

if (e.Key == Key.D4)
{
}

Wer [...] kann, ist klar im Vorteil.

lockAlternative fürasync/await: https://github.com/loop8ack/AsyncTicketLock

c
cprogrammer Themenstarter:in
68 Beiträge seit 2023
vor 13 Tagen

Ja, hatte ich ja auch geschrieben, dennoch kennt es der Compiler nicht, siehe Bild.

A
724 Beiträge seit 2007
vor 13 Tagen

Ist die Referenz auf die WindowsBase eingetragen?

c
cprogrammer Themenstarter:in
68 Beiträge seit 2023
vor 13 Tagen

Im Projekt unter Frameworks - Microsoft.NetCore.App ist WindowsBase vorhanden, ja, und auch SystemWindows.

T
2.183 Beiträge seit 2008
vor 13 Tagen

Die Referenz allein reicht ja nicht.
Du brauchst auch das using im Code dafür.
Bisher ist dein Code ziemlich mager und deshalb nicht erkennbar ob du das drin hast.

Nachtrag:
Das Problem dürfte sein, dass du mit Winforms arbeitest.
Key wird dir in dem Event bei KeyEventArgs auch als Fehler markiert.
Dort musst du gegen KeyCode arbeiten, was dann aber das Keys Enum verwendet.

Link:
https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.keys?view=windowsdesktop-7.0

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

c
cprogrammer Themenstarter:in
68 Beiträge seit 2023
vor 13 Tagen

Ich arbeite mit einer dll und m.E. ohne Windows Forms.

Wenn ich WindowsBase mit using einbinde, dann meckert er auch und sagt es sei "unnessesary".

T
2.183 Beiträge seit 2008
vor 13 Tagen

Okay, mein Fehler.
KeyEventArgs gibt es auch in WinForms, dann aber mit dem KeyCode.

Ansonsten sieht der Code soweit richtig aus.
Keine Ahnung was es mit WindowsBase zu tun hat, wenn die Doku selbst auf System.Windows.Input.Key verweist.
Entsprechend kannst du das WindowsBase using entfernen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

A
724 Beiträge seit 2007
vor 13 Tagen

Schau dir nochmal den Link an, den du gepostet hast:
https://learn.microsoft.com/de-de/dotnet/api/system.windows.input.key?view=windowsdesktop-7.0

Namespace:
System.Windows.Input

Assembly:
WindowsBase.dll

Du machst bei deinem Projekt eine Referenz auf die Assembly und machst bei deiner Klasse ein using auf den Namespace.

T
2.183 Beiträge seit 2008
vor 13 Tagen

@Alftor
Ah ok, übersehen das die Assembly WindowsBase ist.
Seltsam, dass Microsoft hier von der Namenskonvention abgewichen ist.
Dann sollte es eigentlich passen, wenn die Referenz und der richtige Namespace als using drin sind.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.