C Sharpta Yön Tuşları ile Nesneleri Hareket Ettirme

Merak edenleriniz olmuştur, c sharpta yön tuşlarının kontrolünü nasıl yapabiliriz? Merak etmediyseniz bile eminim bu başlığı gördükten sonra ilginizi çekecektir. Bu merakınızı gidermek için küçük bir uygulama ile yön tuşlarının kontrolünü en basit haliyle açıklayacağım.

Uygulamayı kısaca açıkladıktan sonra kodları satır satır inceleyelim. Uygulama, bir form uygulaması. Forma eklenen buton, yön tuşlarıyla hareket ettiriliyor. Basit bir uygulama olduğunu söylemiştim zaten. Daha fazla ayrıntıya girmeden kod incelemesine geçmekte yarar var.

[cc lang='csharp' ]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {
           
        }
        protected override bool ProcessDialogKey(Keys keyData) 
        {
            // Sol yön tuşunu kontrol eden if bloğu
            if (keyData == Keys.Left && button1.Left > 0)
                button1.Location = new Point(button1.Left - 10, button1.Top);
            // Sağ yön tuşunu kontrol eden if bloğu
            else if (keyData == Keys.Right && button1.Right < this.Size.Width)
                button1.Location = new Point(button1.Left + 10, button1.Top);
            // Yukarı yön tuşunu kontrol eden if bloğu
            else if (keyData == Keys.Up && button1.Top > 0)
                button1.Location = new Point(button1.Left, button1.Top - 10);
            // Aşağı yön tuşunu kontrol eden if bloğu
            else if (keyData == Keys.Down && button1.Bottom < this.Size.Height - 50)
                button1.Location = new Point(button1.Left, button1.Top + 10); 
            return base.ProcessDialogKey(keyData); 
        }

    }
}

[/cc]

Kodların asıl kısmına bakalım isterseniz çünkü diğer kısımlar otomatik oluşturulmuş metodlardan ibarettir. Bizim yazdığımız metod, override metodundan da anlaşıldığı gibi daha önceden yazılmış bir metoddur. Bu bölüme girip konuyu dağıtmak istemiyorum. Override, başka bir yazının konusu olsun. "ProcessDialogKey" metodu, klavyeden bir tuşa basıldığında çalışır. Bize düşen ise bu metod içinde, kontrol etmek istediğimiz tuşları if deyimleri içinde kontrol edip, o tuşa basıldığında yapılacakları belirtmek olacaktır. Nitekim öyle de yaptık ve yön tuşların basıldığında butonun o yönde hareket etmesini sağlayan komutları yazdık.
"keyData == Keys.Left && button1.Left > 0" ifadesini anlatmam, tahmin ediyorum diğer if deyimlerinin anlaşılmasını da sağlayacaktır. "keyData" ifadesi, Keys sınıfından türetilen bir nesne olup uygulama anında klavyeden basılan tuş bilgilerini tutar. "keyData == Keys.Lef" ifadesi ile bastığımız tuşun sol yön tuşu olup olmadığını kontrol ediliyor. "button1.Left > 0" ifadesi ise butonun, pencerenin sol sınırına olan uzaklığının sıfırdan farklı olma koşulunu kontrol ediyor ki buton frame dışına çıkmasın.

C sharpta yön tuşlarının kontrolleri bu şekildeydi. Diğer tuşların kontrollerinin de aynı mantıkta olması sebebiyle, yol gösterme amacıyla yön tuşlarının anlatımını seçtim. İyi çalışmalar...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir