C#, Windows Mobile, Dziwne zachowanie klawiszy

Odpowiedz Nowy wątek
2006-11-09 16:48
emce
0

Witam!
Piszę prostą gierkę Puzzle na komórkę, pod Windowsa Mobile 2003 SE - jako projekt zaliczeniowy, a także dla własnej przyjemności :) Jak na razie szło mi dosyć dobrze, zrobiłem jakieś 80% gry - aż natrafiłem na problem, którego nie potrafię ominąć... mianowicie mam własną funkcję WklejFragment, która służy do wklejania konkretnego obrazka na konkretną pozycję. Funkcja działa - ale jeśli jest wywoływana przez klawisze komórki, to nic się nie dzieje... nie potrafię znaleźć żadnego logicznego wytłumaczenia tego błędu, więc proszę o pomoc :)

Oto funkcja, o której wspominałem:

void WklejFragment(int x, int y, Image Fragmencik)
        {
            // Funkcja wkleja w podane miejsce obrazek podany w parametrze
            x = (x - 1) * 30;
            y = (y - 1) * 30;

            Bitmap WycietyFragment = new Bitmap(30, 30);
            Graphics Grafika = Graphics.FromImage(Plansza.Image);
            Grafika.DrawImage(Fragmencik, x, y);
            // Grafika.Dispose();
        }

Przykładowe zastosowanie (oczywiście FragmentDol jest już wcześniej określony):

private void menuItem9_Click(object sender, EventArgs e)
        {
            WklejFragment(3, 2, FragmentDol.Image);
        }

Powyższy kod zadziała bez problemu... natomiast poniższy - już nie :(

private void OknoGlowne_KeyDown(object sender, KeyEventArgs e)
        {
            if ((e.KeyCode == System.Windows.Forms.Keys.F1))
            {
                // 5
                WklejFragment(3, 2, FragmentDol.Image);
            }
        }

Co jest bardzo dziwne - i kompletnie nielogiczne - obsługa klawiszy raczej działa, bo próbowałem zamiast funkcji WklejFragment wstawić tam prosty test - np. Label1.Text = "Test wciśnięcia klawisza";
i po jego naciśnięciu kod się wykonywał... natomiast jeśli pod jakikolwiek klawisz "podepnę" swoją funkcję, to aplikacja tak jakby ją pomija... paranoja...

Będę wdzięczny za pomoc, w razie potrzeby udzielę bardziej szczegółowych informacji (która mogłaby być potrzebna do rozwiązania tego problemu). Właściwie to mogę udostępnić cały kod gry :)

Pozostało 580 znaków

2006-11-21 12:52
darusk
0

Wg mnie dzieje się tak dlatego, że wspomniane menu nie ma Focusa (mialem ten sam problem w compact framework 1.1, chodzilo o DataGrid). Z tego co zauwazylem, to przechwytywanie zdarzen klawiszy dla calej formy nie dziala dla jej poszczegolnych elementow (moge sie mylic, nie zglebialem tego tematu specjalnie, poradzilem sobie "lopatologicznie", ustawiajac recznie focus na datagridzie po kazdej akcji.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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