Laden...

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

Erstellt von cprogrammer vor 8 Monaten Letzter Beitrag vor 8 Monaten 507 Views
C
cprogrammer Themenstarter:in
73 Beiträge seit 2023
vor 8 Monaten
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.094 Beiträge seit 2012
vor 8 Monaten

"Key" ist ein Enum

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

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

C
cprogrammer Themenstarter:in
73 Beiträge seit 2023
vor 8 Monaten

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

A
764 Beiträge seit 2007
vor 8 Monaten

Ist die Referenz auf die WindowsBase eingetragen?

C
cprogrammer Themenstarter:in
73 Beiträge seit 2023
vor 8 Monaten

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

T
2.226 Beiträge seit 2008
vor 8 Monaten

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
73 Beiträge seit 2023
vor 8 Monaten

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.226 Beiträge seit 2008
vor 8 Monaten

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
764 Beiträge seit 2007
vor 8 Monaten

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.226 Beiträge seit 2008
vor 8 Monaten

@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.