17 Nisan 2024 Yazarı yhackup 1

C# EventArgs sayesinde kısa kod yazmak ?

Merhabalar,

Uzun zamandır yazılım ile ilgili konularda yazı yazmıyordum , Normalde Delphi ortamında windows uygulamaları geliştiriyorum ama zorunluluktan bir c# uygulaması geliştirmem gerekti.

C# tarafında EventArgs , Delphi tarafında Sender: TObject benzer şeyler.

 

ve yenilerin pek bilmediği , veya korktuğu bir şey sanırım ki çok fazla sorulan bir konu.

Formumumuza bir buton atıp çifttıladığımızda oluşan bu parametrelerin ne olduğu.

Sonuçta Mektepli değil Alaylı olduğum için teorik bilgilere girmiyorum, pratikte nasıl bir kullanım kolaylığı sağlıyor onu göstereceğim.

 

Bu minik projede basit bir ayar ekranım olacak ve kullanıcının 3 farklı dosya dizini seçebileceği alanlar olacak.

Bunun için 3 adet TextBox nesnesine , Button Adet buton nesnesine ihtiyacım var.

Kullanıcı butona tıklayacak , FolderBrowserDialog açılacak ve dizini seçince ilgili TextBox’a bu path’i yazacak.

Tam olarak bu şekilde bir seçim kutusu , ancak 3 buton ile 3 farklı path seçilecek.

Bunu yapmak için ekrana 3 Button koyacaksınız her bir button Click olayına FolderBrowserDialog ile dizin seçecek ve pathi TextBox’unuzun içerisine yazacaksınız ve kod kalabalığı olacak.

Bunun yerine bize sunulan EventArgs’ı kullanarak 3 butonu tek bir Click olayına bağlayacağız ve bu Click olayı 3 farklı textedite veri yazacak.

Kullanımı ile ilgili örnek aşağıda görebilirsiniz.

using System;
using System.Drawing;
using System.Windows.Forms;

namespace PWA
{
    public partial class Ayarlar : Form
    {
        public Ayarlar()
        {
            InitializeComponent();
        }
       
        protected override void OnLoad(EventArgs e)
        {
            CreateSelectButtons(inText,0);
            CreateSelectButtons(outText,1);
            CreateSelectButtons(parsText,2);
        }

        private void CreateSelectButtons(TextBox textbox,int tag)
        {
            Button inFile = new Button();
            inFile.Size = new Size(50, textbox.ClientSize.Height + 4);
            inFile.Location = new Point((textbox.ClientSize.Width - inFile.Width) + 2, -2);
            inFile.Cursor = Cursors.Default;
            inFile.Text = "Seç";
            inFile.Tag = tag;
            textbox.Controls.Add(inFile);
            inFile.Click += CustomButton_Click;
        }

        private void Ayarlar_Load(object sender, EventArgs e)
        {

        }
        private void CustomButton_Click(object sender, EventArgs e)
        {
            Button b = (Button)sender;
            using (var fbd = new FolderBrowserDialog())
            {
                DialogResult result = fbd.ShowDialog();
                if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
                {
                    switch (int.Parse(b.Tag.ToString()))
                    {
                        case 0:
                            inText.Text = fbd.SelectedPath;
                            break;
                        case 1:
                            outText.Text = fbd.SelectedPath;
                            break;
                        case 2:
                            parsText.Text = fbd.SelectedPath;
                            break;
                        default:
                            break;
                    }                    
                }
            }

        }
    }
}

 

Minik uygulamamızın çalışma video’su bu şekilde…

Umarım faydalı olur 🙂

Saygılar….