Reakcja na naciśnięcie klawisza - Błąd

0

Witam, mam taki żałosny problem, że ciągle mi podkreśla funkcje:
private void dalej_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
licz();
}

Czytałem, że trzeba załaczyc keypreview tylko nigdzie nie potrafie się doszukać tej opcji w visual 2015.
Wiem, że pewnie było milion takich tematów, ale nie potrafie znaleźć nic co mi może pomóc :(

0

Jaki pojawia się komunikat po najechaniu na to podkreślenie? Restart VS nie pomógł? Czasem się zdarzają różne przypadłości i wymaga to restartu zwyczajnego VS albo re-open zakładki z plikiem.

0

System.Windows.Input.KeyEventArgs po prostu nie posiada właściwości KeyCode, dlatego "nie działa". Wynika to z prostego faktu, że piszesz w WPF (albo pochodnej), a KeyCode istniało tylko w Windows Forms.

https://msdn.microsoft.com/pl-pl/library/system.windows.input.keyeventargs%28v=vs.110%29.aspx

Zrób: if (e.Key == Key.Enter) i chyba zadziała.

0
Ktos napisał(a):

System.Windows.Input.KeyEventArgs po prostu nie posiada właściwości KeyCode, dlatego "nie działa". Wynika to z prostego faktu, że piszesz w WPF (albo pochodnej), a KeyCode istniało tylko w Windows Forms.

https://msdn.microsoft.com/pl-pl/library/system.windows.input.keyeventargs%28v=vs.110%29.aspx

Zrób: if (e.Key == Key.Enter) i chyba zadziała.

Niestety nadal nie dziala. Nic się nie podkreśla ale po naciśnieciu przycisku nic sie nie dzieje :( więc jak zrobić, żeby po naciśnieciu 'enter' zadziałał przycisk?

1

w xaml

<Window x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        KeyDown="myTestKey" > 

w cs

private void myTestKey(object sender, KeyEventArgs e)
{
            if ((e.Key == Key.D1) || (e.Key == Key.NumPad1))
            {
                //do some stuff here
                return;
            }
} 

kod bedzie reagowal na cala aplikacje na przycisk jeden (na numerycznej tez) zmien sobie na co potrzebujesz.
Najwazniejsze tutaj jest ta linijka w xamlu

 KeyDown="myTestKey"  

zeby wywolal myTestKey jezeli przejmie KeyDown na calej aplikacji
Rozwiazanie jest troszke brzydkie... ale bedzie dzialac (brzydkie bo globalne)

0
fasadin napisał(a):

w xaml

<Window x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        KeyDown="myTestKey" > 

w cs

private void myTestKey(object sender, KeyEventArgs e)
{
            if ((e.Key == Key.D1) || (e.Key == Key.NumPad1))
            {
                //do some stuff here
                return;
            }
} 

kod bedzie reagowal na cala aplikacje na przycisk jeden (na numerycznej tez) zmien sobie na co potrzebujesz.
Najwazniejsze tutaj jest ta linijka w xamlu

 KeyDown="myTestKey"  

zeby wywolal myTestKey jezeli przejmie KeyDown na calej aplikacji
Rozwiazanie jest troszke brzydkie... ale bedzie dzialac (brzydkie bo globalne)

Wszytko działa:) tylko dlaczego mi nie działa to moje rozwiązanie ?

0

nie musisz cytowac postu ktory jest zaraz nad Twoim...

zobacz typy. Ty masz

System.Windows.Input.KeyEventArgs 

ja mam

KeyEventArgs  
0

private void myTestKey(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
}
}

Tutaj też tak mam, inaczej nie działa. Chodzi mi o to, żeby zrozumieć dlaczego takie zwykłe rozwiazanie:
if (e.KeyCode == Keys.Enter)
{
}
Po prostu nie działa.

1

Powtórzę: Nie działa, bo System.Windows.Input.KeyEventArgs po prostu nie posiada właściwości KeyCode. Nie wiem w czym piszesz - WPF czy UWP, ale ono się troszkę różni of WinForms, w którym KeyCode było.

0

Ja to rozumiem tylko że nawet jak wpisze tak:

    private void dalej_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
       if (e.Key == Key.Enter)
    }

To ta funkcja nie działa i pytanie dlaczego?
Jedynie działa to w taki sposob jaki przedstawil fasadin tylko, że tam nie jest to do konkretnego przycisku tylko ogolnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1