Avatar billede baxos Nybegynder
29. juni 2007 - 02:39 Der er 10 kommentarer og
1 løsning

C# key pressed?

Hej eksperter ..
Er lige begyndt på C# og er igang med at lave et lille spil for sjovt og der skal man så bruge tasterne WSAD har set keypreview til true og så lavet dette stykke kode

private void tester_KeyPress(object sender,eyPressEventArgs e)
        {
            if (e.Keychar = Keys.W)            {
                MessageBox.Show("hey");
            }
                      }
og så får jeg fejlen når jeg prøver at compilere :
Error    1    'System.Windows.Forms.KeyPressEventArgs' does not contain a definition for 'keychar' and no extension method 'keychar' accepting a first argument of type 'System.Windows.Forms.KeyPressEventArgs' could be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\Administrator\Dokumenter\Visual Studio Codename Orcas\Projects\HelloWorld\HelloWorld\tester.cs    47    19    HelloWorld

--
Hvad gør jeg forkert? :)
Avatar billede windcape Praktikant
29. juni 2007 - 05:08 #1
Det er KeyPressEventArgs.KeyChar ikke "Keychar" eller "keychar". C# er case sensitive!

Du har også endnu en tastefejl i dine args, "eyPressEventArgs" skal være "KeyPressEventArgs"
Avatar billede windcape Praktikant
29. juni 2007 - 05:08 #2
Og det skal være == ikke =
Avatar billede baxos Nybegynder
29. juni 2007 - 16:27 #3
har rettet begge fejl du har fundet men får så denne fejl istedet
Error    1    Cannot implicitly convert type 'System.Windows.Forms.Keys' to 'char'. An explicit conversion exists (are you missing a cast?)    C:\Documents and Settings\Administrator\Dokumenter\Visual Studio Codename Orcas\Projects\HelloWorld\HelloWorld\tester.cs    47    29    HelloWorld
Avatar billede skov_p Praktikant
29. juni 2007 - 22:56 #4
Det er fordi at KeyChar giver dig en Char og ikke en Keys værdi.
Jeg mener der er keyCode i stedet for KeyChar
Avatar billede windcape Praktikant
30. juni 2007 - 05:31 #5
KeyChar er fin fin.. du skal bare sammenligne med den rigtige type :p
Avatar billede mysitesolution Nybegynder
03. juli 2007 - 00:09 #6
Men hhm... tror i virkeligheden ikke at du leder efter keypress men keydown og keyup...

Kan lave et eksempel hvis du stadig er interesseret?
Avatar billede baxos Nybegynder
04. juli 2007 - 02:06 #7
jo tak :)
Avatar billede mysitesolution Nybegynder
05. juli 2007 - 20:06 #8
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace KeyDownUp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            KeyDown += new KeyEventHandler(Form1_KeyDown);
            KeyUp += new KeyEventHandler(Form1_KeyUp);
        }

        void Form1_KeyUp(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.W:
                    slutW();
                    break;

                case Keys.A:
                    slutA();
                    break;

                case Keys.S:
                    slutS();
                    break;

                case Keys.D:
                    slutD();
                    break;
            }
        }

        private void slutD()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        private void slutS()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        private void slutA()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        private void slutW()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.W:
                    startW();
                    break;

                case Keys.A:
                    startA();
                    break;

                case Keys.S:
                    startS();
                    break;

                case Keys.D:
                    startD();
                    break;
            }
        }

        private void startD()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        private void startS()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        private void startA()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        private void startW()
        {
            throw new Exception("The method or operation is not implemented.");
        }
    }
}
Avatar billede mysitesolution Nybegynder
05. juli 2007 - 20:07 #9
er den forståelig, eller skal du have den forklaret?

fx startD() er når "D" bliver trykket ned, og fx slutD() er når "D" slippes igen.
Avatar billede mysitesolution Nybegynder
05. juli 2007 - 20:11 #10
keypreview skal være true som du også har gjort ved dit eksempel
Avatar billede baxos Nybegynder
05. juli 2007 - 20:47 #11
joh jeg forstod det :)
og takker for dit svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester