:::: MENU ::::

Örnek Bir GUI Uygulaması

Ekrana bir pencere cıkartan temel GUI programına iskelet program denilebilir. Iskelet gui programında bazı işlemlerin mutlaka yapılması gerekir. Burada bunların detaylarından bahsetmeyecegiz.
Iskelet gui progrmaı sırasıyla şu adımlardan geçirilerek oluşturulur:
– boş bir proje yaratılır.
– Proje deşu 3 .dll ‘e referans edilmelidir;
o System.dll
o System.Windows.Forms.dll
o System.Drowing.dll
– Projeye kaynak dosya eklenir. Ve iskelet program aşagıdaki gibi olusturulur.
– Ayrıca siyah ekranın cıkmasını engellemek için proje seçeneklerinden Output Type’ ımız windows application olarak seçilir.

Form sınıfı ana pencereyi temsil etmektedir. Genellikle programcılar bu sınıfı doğrudan kullanmak yerine türetme yaparak kullanmaktadır.
Iskelet programda, programın ana penceresi yaratlms ve application.run metoduna bu ana pencere nesnei geçirilmiştr.

Application.Run(new MyForm());
class MyForm : Form
	{
		//...
	}

Yukarıdaki kod şu şekilde de yazılabilrdi.
MyForm myForm = new MyForm();
Application.Run(myForm);
using System;
using System.Windows.Forms;
using System.Drawing;

namespace CSD
{
	class App
	{
		public static void Main()
		{
			Application.Run(new MyForm());

		}
	}

	class MyForm : Form
	{
		//...
	}
}

Yada

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

namespace CSD
{
	class App
	{
		public static void Main()
		{			
			MyForm myForm = new MyForm();
			Application.Run(myForm);
		}
	}

	class MyForm : Form
	{
		//...
	}
}

Ister ana pencereler olsun ister alt pencereler olsun tüm pencerelerin ortak özellikleri control sınıfında toplanmıstır.

Control sınıfndaki elemanlar ana pencere için de button için de söz konusudur. O halde ilk başlarda control sınıfına odaklanmak anlamlıdır.
Control sınıfının string türünden text isimli property elemanı. Pencere yazısını belirlemekte kullanılır. Her pencerenin bir yazısı vardır.

Control sınıfının location isimli property elemanı point isimli yapı türündendir ve bu pencerenin konumunu ayarlamakda kullanılır.

Ana pencereler için origin noktası masa üstünün sol üst köşesi, alt pencereler için origin noktası ise çalışma alanının sol üst köşesidir.
Control sınıfının size isimle property elemanı size siimli yapı türündendir. Bu property pencerenin genişlik ve yüksekligini ayalaramaktadır.
***Anahtar notlar:***************************************
Türemiş sınıf, taban sınıfn event elemanlarını doğrudan kullanabilir; fakat yine yalnızca += ve -= operatörleriyle kullanılabilir.
//Türemiş. Sınıf taban sınıfın elemanlarını delege gibi kullanamıyor//
******************************************************
Control sınıfının click isimli event elemanı, event handler siimil bir delege türündendir. Bir pencereye tıklandığında tetiklenir.

Event handler isimli delegenin parametrik yapısı şöyledir:

public delegate void EventHandler(object sender, EventArgs e)

FORM KODU:


using System;
using System.Windows.Forms;	     Using direktifleri
using System.Drawing;

namespace CSD
{
    class App
    {
        public static void Main()
        {
            MyForm myForm = new MyForm();
            Application.Run(myForm);
        }
    }

    class MyForm : Form
    {
        private Button m_buttonOK;
        private TextBox m_textBox;

        public MyForm()
        {
            this.Text = "Sample GUI";
            this.Size = new Size(800, 400);
            this.Click += new EventHandler(ClickHandlerForm);

            m_buttonOK = new Button();
            m_buttonOK.Text = "Ok";
            m_buttonOK.Size = new Size(70, 50);
            m_buttonOK.Location = new Point(100, 200);
            m_buttonOK.Click += new EventHandler(ClickHandlerButton);
            m_buttonOK.Parent = this;

            m_textBox = new TextBox();
            m_textBox.Text = "Deneme";
            m_textBox.Location = new Point(50, 50);
            m_textBox.Parent = this;

        }

        private void ClickHandlerForm(object o, EventArgs e)
        {
            MessageBox.Show("Form Click");
        }

        private void ClickHandlerButton(object o, EventArgs e)
        {
            MessageBox.Show("Button Click");
        }

        //...
    }
}

EKRAN ÇIKTISI: (Resmi Boyutlandırarak yazıları okuyabilirsiniz)

Türlere İlişkin Type Nesneleri

C#’da türler kategori olarak ikiye ayrılır: değer türleri ve referans türleri. C#’ın tüm türleri şunlardır:

– class +delege
– struct
– enum
– interface

Programcı ne zaman bir türü kullanacak olsa CLR bu tür için System.Type isimli bir sınıf türünden bir “sınıf” nesnesi oluşturur. Bu type nesnesi, ilgili türü idare etmek için kullanılılmaktadır.
Bir türün type nesne referansı typeof isimli operatör ile elde edilebilir.

Typeof operatörünün kullanımı şöyledir:
Typeof(< tür ismi >);

Örneğin;

Type t;
t = typeof(Sample);

Type sınıfının name isimli property elemanı ilgili türün ismini. FullName isimli property elemanı ise isim alanı ile birlikte türün ismini vermektedir.

Aynı türe ilişkin tek bir type nesnesi oluşturulmaktadır, dolayısıyla biz aynı tür için uyguladığımız tüm typeof operatörlerinden aynı referansı elde ederiz. Burada “t1” ve “t2” aynı nesneyi göstermektedir.

Kaynak:Kaan Aslan Hocanın Dersinde Tuttuğum Ders Notlarıdır.


So, what do you think ?