Anasayfa » C# » C# Bileşenin Form Üzerindeki Yerini Rastgele Değiştirmek

C# Bileşenin Form Üzerindeki Yerini Rastgele Değiştirmek

Bu uygulamada amaç form üzerinde yer alan bir panel bileşeninin yerini butona tıklayarak değişmesini sağlamak olacaktır. Bunun için form üzerine 1 adet Button ve 1 adette panel bileşeni eklememiz gerekiyor. Panel bileşenini yerini her butona tıklamada rastgele değiştirebilmek için rastgele sayı üretmede kullanılanRandom sınıfından faydalanılacaktır.

C# Bileşen Yerini Değiştirmek Uygulama için form üzerinde 1 adet Button ve 1 adet panel bileşeni eklenir. Panel bileşeninin renginin formun renginden farklı olması için BackColor özelliği değiştirilmiştir. Butona her tıklamamızda panelin yeri rastgele olarak değiştirilecektir. Bir bileşenin form üzerindeki yeri Location özelliği ile belirlenir. Location özelliğinin X ve Y adında 2 alt özelliği daha vardır. X özelliği bileşenin soldan olan mesafesini belirlerken, Y özelliği ise bileşenin yukarıdan olan mesafesini belirler. Panelin yerini değiştirmek için bir Point tanımlanıp

1
2
Random r = new Random();
panel1.Location = new Point(r.Next(200), r.Next(200));

şeklinde location özelliğine atanabilir veya X ve Y özelliklerine ulaşabilmek için Left ve Top özellikleri kullanılabilir. Left özelliği X’e, Top özelliği ise Y’ye karşılık gelmektedir.C# Bileşen Yeri Değiştirmek Location Özelliği Panel bileşenini yeni yerini belirlemek amacıyla 0 ile 200 arasında rastgele 2 sayı üretip bunlar Left ve Top değerlerine atanmıştır. Üretilen sayıların 0 ile 200 arasında olmasının nedeni, panel bileşeninin formun dışına taşmasını engellemektir. 200 sayısını artırarak veya azaltarak formun boyutuna göre değiştirebiliriz.

1
2
3
4
5
6
private void button1_Click(object sender, EventArgs e)
{
    Random r = new Random();
    panel1.Left = r.Next(200);
    panel1.Top  = r.Next(200);
}

Yapılan uygulamada Button bileşenine her tıklamada Panel bileşenini yeri rastgele olarak değiştirilmektedir. Eğer Button tıklaması yerine Panelin üzerinde gelince panelin fareden kaçmasını istiyorsak yani Panele her gelişimizde Panel rastgele olarak yer değiştirsin istiyorsak o zaman az önce kullanılan kodları Button_Click olayını yerine Panelin MouseMove olayına yazmamız yeterli olacaktır. Kodlarda hiçbir değişiklik yapmadan kodları yazabiliriz. Kodları yazdıktan sonra artık fare panel üzerinde geldikçe panel fareden kaçmaya başlayacaktır. Çünkü MouseMove olayı fare bileşen üzerinde gezinirken çalışan olaydır.

1
2
3
4
5
6
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
    Random r = new Random();
    panel1.Left = r.Next(200);
    panel1.Top = r.Next(200);
}

Bileşen Yeri Değiştirme 4 Button kullanarak form üzerinde yer alan panelin yerini sağa, sola ve aşağı, yukarı oynatan uygulamada aşağıdaki kodlar kullanılır. Uygulamada, panelin formun sınırlarına gelince nasıl davranacağı ile ilgili 3 farklı seçenek sunulmuştur. Hiçbir şey olmamış gibi devam edecek ve formdan taşacaktır, sınırda duracak veya başa dönecektir. Kullanıcı bu seçeneklerden birini ComboBox bileşeninden seçerek belirler.  C# Bileşen Yeri Değiştirmek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
private void button2_Click(object sender, EventArgs e)
{
    switch (comboBox1.SelectedIndex)
    {
        case 1:
            if (panel1.Left < 540) panel1.Left = panel1.Left + 10;
            break;
        case 2:
            panel1.Left = panel1.Left + 10;
            if (panel1.Left > 540) panel1.Left = 0;
            break;
        default:
            panel1.Left = panel1.Left + 10;
            break;
    }
}
private void button4_Click(object sender, EventArgs e)
{
    switch (comboBox1.SelectedIndex)
    {
        case 1:
            if (panel1.Top < 250) panel1.Top = panel1.Top + 10;
            break;
        case 2:
            panel1.Top = panel1.Top + 10;
            if (panel1.Top > 250) panel1.Top = 0;
            break;
        default:
            panel1.Top = panel1.Top + 10;
            break;
    }
}
private void button1_Click(object sender, EventArgs e)
{
    switch (comboBox1.SelectedIndex)
    {
        case 1:
            if (panel1.Left > 0) panel1.Left = panel1.Left - 10;
            break;
        case 2:
            panel1.Left = panel1.Left - 10;
            if (panel1.Left < 0) panel1.Left = 540;
            break;
        default:
            panel1.Left = panel1.Left - 10;
            break;
    }
}
private void button3_Click(object sender, EventArgs e)
{
    switch (comboBox1.SelectedIndex)
    {
        case 1:
            if (panel1.Top > 0) panel1.Top = panel1.Top - 10;
            break;
        case 2:
            panel1.Top = panel1.Top - 10;
            if (panel1.Top < 0) panel1.Top = 250;
            break;
        default:
            panel1.Top = panel1.Top - 10;
            break;
    }
}
private void Form1_Load(object sender, EventArgs e)
{
    comboBox1.SelectedIndex = 0;
}

kaynak : http://www.dersnotusitesi.com/yazi/csharp-bilesenin-form-uzerindeki-yerini-rastgele-degistirmek

Cevapla

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmelidir *

*