» »

[c#] event, klik tipke escape

[c#] event, klik tipke escape

japol ::

Imam kodo:
public Form1()
        {
            InitializeComponent();
            this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPressed);
        }

in
        private void Form1_KeyPressed(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Escape)
            {
                RisanjeČrte = false;
                RisanjeKroga = false;
                OpisSlike = false;
                BrisalecSlike = false;

                label61.Text = "Izberi ukaz";
            }
        }


in to ne dela.
RisanjeČrte, RisanjeKroga,... so metode slikarja in s klikom na "esc" želim prekiniti ukaze risanja.
Kako to popravim? Kako se s takimi eventi sploh dela?

darkkk ::

Najprej probaj, ali ti eventhandler sploh ujame event, recimo dodaj noter MessageBox.Show("Esc") oz. breakpoint. (mogoče nimaš fokusa prav, oz. kaj drugega, ampak na prvi pogled zgleda koda dodajanja delegata noter ok) (čeprav se to ponavadi doda drugam :) )

Kaj pa sam event handler naredi ti pa ne morem pomagat, kar ti narediš je: 4-im spremenljivkam v lasti forme spremeniš vrednost na false ter nek label popraviš. Ta stvar brez nekega "invalidate-a" ne bo naredila nič "vidnega".

Zgodovina sprememb…

  • spremenil: darkkk ()

JanOlMajti ::

Si "private void Form1_KeyPressed(object sender, KeyPressEventArgs e)" sam napisal, ali ti je funkcijo samo naredilo (klik preko properties events (taka rumena strela))?

japol ::

darkkk: mi ga ne ujame, ker mi label61, ki je v kodi, ne spremeni.
janolmajti: sem uporabil obe varianti, in kodo z uporabo KeyCode, KeyEventArgs,... pa nič od tega ne dela.

Če mi lahko, prosim popravita kodo. Pa še kakšen primer, kako je če delam to na nekem svojem classu (npr.: Class1.cs).

darkkk ::

Ja, ampak ali ti ujame event, ali ti samo ne gre v if ? Ker na prvi pogled zgleda koda za lovljenje eventa ok, ampak lahko pogledam bolj podrobno po kosilu :)

FuI2cY ::

Poskusi v konstruktor dodati this.KeyPreview = true;

JanOlMajti ::

Tole ti bo delalo:

protected override Boolean ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == Keys.Escape)
            {
                OnPressEscapeKey();
            }

            return true;
        }

        private void OnPressEscapeKey()
        {
            MessageBox.Show("Escape Key Is Pressed");
        }


na tem linku
http://channel9.msdn.com/Forums/TechOff...

japol ::

Hvala janolmajti. Res deluje, brezhibno.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#]izvajanje kode

Oddelek: Programiranje
131083 (817) LeQuack
»

[C++] izris v [x,y]

Oddelek: Programiranje
131160 (862) DuleKrtola
»

C# - keypress

Oddelek: Programiranje
201627 (1358) urkrajnc
»

pošiljanje SMS C#

Oddelek: Programiranje
133131 (2624) Neon87
»

[C#]Textbox ki dovoli samo številke

Oddelek: Programiranje
121353 (1217) darkolord

Več podobnih tem