31 Mart 2012 Cumartesi

C# ile Form

Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# .NET Framework 4 ile Windows Forms uygulamalarının temel yapı taşı olan Form'ların kullanımını detaylı bir şekilde inceleyeceğiz. Formlar, kullanıcı arayüzünün temelini oluşturur ve uygulamamızın kullanıcıyla etkileşimini sağlayan görsel bileşenleri (düğmeler, metin kutuları, listeler vb.) üzerinde barındırır. Bu makalede, Form özelliklerini, olaylarını, formlar arası iletişimi ve özel diyalog kutuları oluşturmayı ele alacağız.

Form Nedir?

Form, Windows Forms uygulamalarında bir pencereyi temsil eden bir sınıftır. Kullanıcı arayüzünde gördüğümüz her pencere aslında bir Form nesnesidir. Formlar, uygulamamızın görsel bileşenlerini barındırır ve kullanıcıyla etkileşimini yönetir.

Form Özellikleri

Formların birçok özelliği vardır. Bu özellikler, formun görünümünü ve davranışını kontrol etmemizi sağlar. İşte bazı önemli Form özellikleri:

  • Boyut ve Konum:
    • Width: Formun genişliği.
    • Height: Formun yüksekliği.
    • Size: Formun genişlik ve yüksekliğini temsil eden Size yapısı.
    • Location: Formun ekran üzerindeki konumunu temsil eden Point yapısı.
    • StartPosition: Formun ekranda hangi konumda açılacağını belirler (örneğin, CenterScreen, WindowsDefaultLocation).
  • Kenarlık ve Durum:
    • FormBorderStyle: Formun kenarlık stilini belirler (örneğin, None, FixedSingle, FixedDialog, Sizable, Maximized, Minimized).
    • WindowState: Formun durumunu belirler (örneğin, Normal, Maximized, Minimized).
    • TopMost: Formun diğer pencerelerin üzerinde olup olmayacağını belirler.
    • ShowInTaskbar: Formun görev çubuğunda görünüp görünmeyeceğini belirler.
  • Görünüm:
    • BackColor: Formun arka plan rengi.
    • ForeColor: Formun ön plan (metin) rengi.
    • Font: Formun metinlerinin yazıtipi.
    • Text: Formun başlık çubuğunda görünen metin.
    • Icon: Formun simgesi.
    • TransparencyKey: Formun hangi renginin şeffaf olacağını belirler.
    • Opacity: Formun şeffaflık düzeyini ayarlar (0 ile 1 arasında bir değer alır).
  • Diğer:
    • AutoScroll: Formun içeriği boyutundan büyükse kaydırma çubuklarının görünüp görünmeyeceğini belirler.
    • MaximizeBox: Formun büyütme düğmesinin görünüp görünmeyeceğini belirler.
    • MinimizeBox: Formun küçültme düğmesinin görünüp görünmeyeceğini belirler.
    • ControlBox: Formun kontrol kutusunun (küçültme, büyütme, kapat düğmeleri) görünüp görünmeyeceğini belirler.

Örnek Kullanım:

using System.Windows.Forms;
using System.Drawing; // Color için

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // Bilgisayar ekranının boyutlarını alma
        int ekranGenisligi = SystemInformation.PrimaryMonitorSize.Width;
        int ekranYuksekligi = SystemInformation.PrimaryMonitorSize.Height;
        Console.WriteLine("Ekran Genişliği: " + ekranGenisligi);
        Console.WriteLine("Ekran Yüksekliği: " + ekranYuksekligi);

        // Form özelliklerini ayarlama
        this.FormBorderStyle = FormBorderStyle.None; // Kenarlık yok
        this.WindowState = FormWindowState.Maximized; // Formu tam ekran yap
        this.TopMost = true; // Formu her zaman üstte tut
        this.ShowInTaskbar = false; // Formu görev çubuğunda gösterme

        // Şeffaf arka plan
        this.BackColor = Color.Fuchsia; // Şeffaf renk olarak kullanılacak rengi belirle
        this.TransparencyKey = Color.Fuchsia; // Belirtilen rengi şeffaf yap

        this.AutoScroll = true; // İçerik taşarsa kaydırma çubuklarını göster
    }

    // Kaynaklardan resim veya ayar alma örnekleri
    private void LoadResourcesAndSettings()
    {
        // Resourcedan dosya alma (Properties/Resources.resx içinde tanımlı olmalı)
        // Image myImage = Properties.Resources.button2; 
        // if (myImage != null) { /* Resimle ilgili işlem yap */ }

        // Sabitlerden değişken alma (Properties/Settings.settings içinde tanımlı olmalı)
        // string settingValue = Properties.Settings.Default.SettingName;
        // Console.WriteLine("Ayar Değeri: " + settingValue);
    }
}

Form Olayları

Formların birçok olayı vardır. Bu olaylar, formun yaşam döngüsü ve kullanıcı etkileşimleri sırasında meydana gelir. İşte bazı önemli Form olayları:

  • Load: Form ilk yüklendiğinde meydana gelir.
  • Shown: Form ekranda göründükten sonra meydana gelir.
  • FormClosing: Form kapatılmadan önce meydana gelir. Bu olayda formun kapatılmasını iptal edebiliriz.
  • FormClosed: Form kapatıldıktan sonra meydana gelir.
  • Resize: Formun boyutu değiştiğinde meydana gelir.
  • Move: Formun konumu değiştiğinde meydana gelir.
  • Click, DoubleClick, MouseDown, MouseUp, MouseMove: Fare olayları.
  • KeyPress, KeyDown, KeyUp: Klavye olayları.

Formlar Arası İletişim

Bir uygulamada birden fazla form olabilir. Bu formlar arasında veri alışverişi yapmak gerekebilir. İşte formlar arası iletişimi sağlamanın bazı yolları:

  • Ortak Kontrole Erişim: Bir formdan başka bir formdaki bir kontrole (örneğin, TextBox) erişmek için, hedef kontrolün erişim seviyesinin uygun olması gerekir (örneğin, public veya protected internal).
// A formundan B formunun içindeki textBox1 kontrolüne erişim (textBox1, B formunda protected internal olmalı)
// Varsayım: Form1 içinde bir textBox1 ve frmAppointment adında bir Form sınıfı var.
// Application.OpenForms koleksiyonu ile açık formlara erişilir.
public partial class FormA : Form
{
    private void buttonAccessFormB_Click(object sender, EventArgs e)
    {
        // Form1 adında bir formun açık olduğunu ve içinde textBox1 adında bir kontrol olduğunu varsayalım
        Form1 targetForm = Application.OpenForms["Form1"] as Form1;
        if (targetForm != null)
        {
            // Eğer Form1'deki textBox1 protected internal ise erişilebilir.
            // targetForm.textBox1.Text = "Veri Form A'dan geldi.";
            MessageBox.Show("Form1'deki TextBox'a erişim denendi.");
        }
        else
        {
            MessageBox.Show("Form1 açık değil.");
        }
    }
}
  • Ortak Değişkene Erişim: Bir formdan başka bir formdaki bir değişkene erişmek için, değişkenin public static olarak tanımlanması gerekir.
// B formunda public static bir değişken tanımlayalım
public partial class Form1 : Form
{
    public static int degisken = 0; // Bu değişken diğer formlardan erişilebilir
    public Form1()
    {
        InitializeComponent();
    }
}

// A formundan B formundaki degisken değişkenine erişim
public partial class FormA : Form
{
    private void buttonSetVariable_Click(object sender, EventArgs e)
    {
        Form1.degisken = 10; // Form1'deki statik değişkene değer atama
        MessageBox.Show("Form1'deki değişkenin değeri 10 olarak ayarlandı.");
    }
}
  • Veri Gönderme ve Alma (Constructor ile): Bir formdan başka bir forma veri göndermek için, hedef formun kurucusuna (constructor) parametre ekleyebiliriz.
// A formundan B formuna veri gönderme
public partial class FormA : Form
{
    private void buttonOpenFormB_Click(object sender, EventArgs e)
    {
        int gonderilecekVeri = 123;
        Form2 frm = new Form2(gonderilecekVeri); // Form2'yi parametre ile aç
        frm.Show();
    }
}

// B formu (Form2)
public partial class Form2 : Form
{
    private int alinanVeri;
    public Form2(int _alinanVeri) // Kurucu metot, parametre alır
    {
        InitializeComponent();
        alinanVeri = _alinanVeri; // Alınan veriyi değişkene ata
        MessageBox.Show("Form2'ye gelen veri: " + alinanVeri.ToString());
    }
}

Alt Form Oluşturma Metodu

Bir formu başka bir formun içinde veya diyalog olarak göstermek için, genellikle yardımcı bir metot tanımlayabiliriz. ShowDialog() metodu, formu bir diyalog kutusu gibi açar ve kullanıcının bu formu kapatmadan ana forma dönmesini engeller.

private void AltFormAc(Form gelenFrm, string baslik)
{
    gelenFrm.Text = baslik; // Formun başlığını ayarla
    gelenFrm.StartPosition = FormStartPosition.CenterScreen; // Formu ekranın ortasında aç
    gelenFrm.MaximizeBox = false; // Büyütme düğmesini gizle
    gelenFrm.MinimizeBox = false; // Küçültme düğmesini gizle
    gelenFrm.FormBorderStyle = FormBorderStyle.FixedSingle; // Boyutlandırılamaz kenarlık
    gelenFrm.Icon = this.Icon; // Ana formun simgesini kullan
    gelenFrm.ShowDialog(this); // Formu diyalog olarak aç (ana formu kilitleyen)
}

// Örnek kullanım (ana formdan)
private void buttonOpenAltForm_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2(99); // Yeni bir Form2 örneği oluştur
    AltFormAc(frm2, "Alt Form Başlığı"); // Yardımcı metot ile aç
}

Özel Diyalog Kutusu Oluşturma

Kendi özel diyalog kutularımızı da oluşturabiliriz. Bunun için bir Form tasarlayıp, bu Formun DialogResult özelliğini ayarlayarak ve ShowDialog() metoduyla açarak diyalog kutusu gibi davranmasını sağlayabiliriz.

Diyalog Formu (ConfirmationForm):

public partial class ConfirmationForm : Form
{
    public ConfirmationForm()
    {
        InitializeComponent();
        // Form üzerinde bir "Tamam" ve "İptal" butonu olduğunu varsayalım
    }

    private void buttonOK_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.OK; // Tamam butonuna tıklandığında DialogResult'ı OK olarak ayarla
        this.Close(); // Formu kapat
    }

    private void buttonCancel_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.Cancel;  // İptal butonuna tıklandığında DialogResult'ı Cancel olarak ayarla
        this.Close(); // Formu kapat
    }
}

Ana Formda Kullanım:

public partial class MainForm : Form
{
    private void buttonShowConfirmation_Click(object sender, EventArgs e)
    {
        ConfirmationForm frmCon = new ConfirmationForm(); // Diyalog formunu oluştur
        // ShowDialog() metodu, diyalog kapatıldığında DialogResult değerini döndürür
        if (frmCon.ShowDialog(this) == DialogResult.OK) // Diyalog formu OK ile kapatıldıysa
        {
            // Kullanıcı Tamam'a tıkladıysa yapılacak işlemler
            MessageBox.Show("İşlem Onaylandı!");
        }
        else
        {
           // Kullanıcı İptal'e tıkladıysa yapılacak işlemler
           MessageBox.Show("İşlem İptal Edildi!");
        }
    }
}
---

Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile Form kullanımını ve formlar arası etkileşimi kapsamlı bir şekilde ele aldık. Formlar, Windows Forms uygulamalarının temel yapı taşıdır ve kullanıcı arayüzünü oluşturmak için vazgeçilmezdir. Bu makalede ele aldığımız konular, formların özelliklerini, olaylarını, formlar arası iletişimi ve özel diyalog kutuları oluşturmayı içermektedir. Umarım bu bilgiler, C# .NET Framework 4 ile form tabanlı uygulamalar geliştirirken size yardımcı olur. Bir sonraki yazımda, C# dilinin diğer önemli yapı taşlarını keşfetmeye devam edeceğiz. Webkolog.net'i takipte kalın!

Hepinize verimli ve başarılı geliştirme süreçleri dilerim!

0 yorum:

Yorum Gönder