C# Karakter Atama

rCpkSk

Asistan
Katılım
11 Kasım 2011
Mesajlar
250
Reaksiyon puanı
0
Puanları
16
Şöyle bir sıkıntım var. Formda sadece a ttuşuna basınca arkada renkler sürekli değişecek herşeyi yaptımda a tuşunu star olarak nasıl atayacağım onu bulamadım bilen birileri varmıdır acaba ?
 

EropaKING

Profesör
Katılım
29 Temmuz 2009
Mesajlar
1,652
Reaksiyon puanı
17
Puanları
0
"Star olarak nasıl atayacağım" derken neyi kastettiğini anlamadım.. Ama böyle bir işlem için öncelikle
using System.Windows.Input;
referansını eklemen gerekiyor. Daha sonra da "A" tuşuna basılıp basılmadığı sorgulaman gerekiyor:

if ((e.KeyChar & (char)Keys.A) != 0))
{
// A tuşuna basıldı ! Gereken işlemleri yap.
}
 

rCpkSk

Asistan
Katılım
11 Kasım 2011
Mesajlar
250
Reaksiyon puanı
0
Puanları
16
start olacaktı o :D Bu arada
if ((e.KeyChar & (char)Keys.A) != 0))
{
// A tuşuna basıldı ! Gereken işlemleri yap.
}
bu kodu formun load bölümüne ekleyeceğim demi ?
 

EropaKING

Profesör
Katılım
29 Temmuz 2009
Mesajlar
1,652
Reaksiyon puanı
17
Puanları
0
start olacaktı o :D Bu arada
if ((e.KeyChar & (char)Keys.A) != 0))
{
// A tuşuna basıldı ! Gereken işlemleri yap.
}
bu kodu formun load bölümüne ekleyeceğim demi ?

Öncelikle geç cevap için kusura bakma :)
Load bölümüne eklemenin pek bir anlamı olmayacaktır. Çünkü bu kodun tetiklenmesi, bir tuşa basılması olayı esnasında olmalıdır. Bu olayda KeyDown olayıdır. Form olaylarının listesine gelip keydown'a çift tıklarsan:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
// Form üzerinde bir tuşa basıldı...VE olay tetiklendi.
//
Aşağıda da A tuşuna basıldı ise ne yapılması gerektiğini belirtiyoruz

if ((e.KeyChar & (char)Keys.A) != 0))

{

// A tuşuna basıldı ! Gereken işlemleri yap.

}
}
 

EropaKING

Profesör
Katılım
29 Temmuz 2009
Mesajlar
1,652
Reaksiyon puanı
17
Puanları
0
KODUN Çalışan ve Denenmiş Hali:

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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


//Bahsettiğim KEYDOWN metodu ile basılan tuşun A ve B olmasına göre Renk değişimini durdurup başlatıyoruz.
private void Form1_KeyDown(object sender, KeyEventArgs EropaKING)
{
if (EropaKING.KeyCode == Keys.A)
{
//RENK CÜMBÜŞÜ BAŞLASIN
timer1.Enabled = true;
timer1.Interval = 100;
timer1.Start();
}

if (EropaKING.KeyCode == Keys.B)
{
//RENK CÜMBÜŞÜ DURSUN
timer1.Stop();
timer1.Enabled = false;
}
}


// TİMER ile yapılacak işlem (Rastgele renk ataması yapıyoruz)
private void timer_islemi(object sender, EventArgs e)
{
Random rnd = new Random();
this.BackColor = Color.FromArgb((rnd.Next(0, 255)), (rnd.Next(0, 255)),
(rnd.Next(0, 255)));
}


//BU KISIM Sadece Keypress ile Karakterleri nasıl algılarsın diye eklendi. Metodu tanıman için yani.
//private void Form1_KeyPress(object sender, KeyPressEventArgs EropaKING)
//{
// var YeniTimer = new Timer();
// YeniTimer.Interval = 300;

//if (EropaKING.KeyChar == (char)Keys.A)
//{
// RENK CÜMBÜŞÜ BAŞLASIN

// YeniTimer.Enabled = true;
//
YeniTimer.Tick += new EventHandler(timer1_Tick);
//
YeniTimer.Start();
//}

//if (EropaKING.KeyChar == (char)Keys.B)
//{
//
YeniTimer.Stop();
// YeniTimer.Enabled = false;
//}
//}

}
}

NOT: Söylemeyi unuttum; kod üzerinde EropaKING yazan yerleri istediğin gibi değiştirebilirsin. Normalde EropaKING yazan yerlerde varsayılan olarak "e" yazar. Sen istersen "rCpkSk" bile yazabilirsin.
 
Üst