C# Aynı anda iki tuştan birinin deaktif edilmesi

Başlatan abdul_1234, 23 Nisan 2014, 02:50:12

abdul_1234

Merhaba Arkadaşlar,

C# aynı anda iki tuşu kontrol etmek istiyorum. Bunu KeyUp ve KeyDown kullanarak sağladım. Fakat şöyle bir sorun var. Örneğin: A ve B tuşunu aynı anda kontrol etmek istiyorum. A tuşuna bastıktan sonra B basınca iki tuş aktif oluyor. Ya da B tuşuna bastıktan sonra A tuşuna basınca iki tuş aktif oluyor. Fakat şöyle bir sorun var. A tuşuna bastıktan sonra B tuşuna basıyorum. Sonra B tuşundan elimi çekince sistem B tuşuna elimden çektiğimi tanımıyor. Bu sorunun sizce nasıl çözebilirim?

Şimdiden cevap veren arkadaşlara teşekkür ederim.
bool tus1;
        bool tus2;

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Up)
            {
                tus1 = true;
            }

            if (e.KeyCode == Keys.Down)
            {
                tus2 = true;
            }

 

            if (tus1 == true && tus2==true )
            {
                label1.Text = "Up+Down";



            }
            else if (tus1 == true)
            {
                yukariTus_Click(sender, e);
            }
            else if (tus2 == true)
            {
                asagiTus_Click(sender, e);
            }
          

        }

        private void Form1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Up)
            {
                tus1 = false;
            }

            if (e.KeyCode == Keys.Down)
            {
                tus2 = false;
            }

        }

barisertekin

Oyun programlama ile uğraşırken şöyle bir sistem ile karşılaşmıştım.

Saniyede 50-60 kez(bilgisayarın kaldırdığı kadar) içerisindeki kodları çalıştıran bir while döngüsü var.

Bu döngünün içerisinde if(key.a == pressed) şeklinde kullanıyorsun fakat aslında bunlar boolean tipinde önceden set edilmiş tipler.

Kullanacağın tuşlar için bool A = false; bool B = false; şeklinde tanımlamaları yaptıktan sonra. Farklı bir thread içerisinde tuş basımlarına göre bunları set et(true, false);

Böylece artık ana programda sadece bu değişkenlere bakarsın.