PROGRAMLAMA DİLLERİNE GİRİŞ Ders 11: Birden Çok Form ile Çalışma ve Menü Oluşturma Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği
Projeye yeni bir form ekleme Projemize başka bir form eklemek istersek «Project» menüsünden «Add Windows Form» seçerek karşımıza gelen pencerede yeni formun ismini belirleyip «Add» düğmesine tıklamamız yeterlidir. Projemizi çalıştırdığımızda yeni yarattığımız form görünmeyecek, proje eski form ile başlayacaktır. Bunun nedeni projemizin başlangıç noktası olan Program.cs dosyasındaki Main() yönteminde halen eski formun çağrılıyor olmasıdır: Application.Run(new Form1()); Eğer yeni yarattığınız formun adı Form2 ise yukarıdaki satırda Form1 yerine Form2 yazarak yeni formunuzun program çalıştırıldığında ekrana gelmesini sağlayabilirsiniz.
Bir formdan diğer formu çağırma Eğer projemizdeki bir formdan başka bir formu çağırmak (görüntülemek) istersek önce yeni formumuzun sınıfından bir nesne üretmeli, sonra o nesnenin Show yöntemini kullanmalıyız: Form2 yeniForm = new Form2(); yeniForm.Show(); Aynı formdan başka bir nesne daha üretip Show ile görüntüleyebilir, böylece bu formun farklı hafıza bölgesinde yer alan kopyalarını elde edebiliriz.
Kod ile Form oluşturmak İstersek «Add Windows Form» ile ekleme yapmadan, kod ile sıfırdan bir form da oluşturabiliriz. Bunun için Form sınıfından nesne üretmeliyiz: Form yeniForm = new Form(); yeniForm.Show(); Program çalışırken yaratılacak olan bu form boş bir form olacağı için üzerinde yer alacak olan kontrolleri de kod ile yaratmalıyız.
Program çalışırken kontroller yaratmak Eğer çalışma zamanında (run-time) form üzerinde kontroller yaratmak istersek, yine o kontrolün sınıfından bir nesne oluşturmalı ve bu nesneyi forma eklemek için, formun Controls.Add yöntemine oluşturduğumuz nesneyi parametre olarak vermeliyiz: TextBox yeniMetinKutusu = new TextBox(); this.Controls.Add(yeniMetinKutusu); Eklenen kontrol formun sol üst köşesinde görünecektir. Kontrolün konumunu belirlemek için Left ve Top özellikleri, boyutunu belirlemek için de Width ve Height özellikleri (veya hepsi için SetBounds yöntemi) kullanılabilir. «this» ifadesi bulunduğumuz sınıfı (örneğin Form1) ifade eder
Form üstüne 64 adet düğme ekleyen kod private void Form1_Load(object sender, EventArgs e) { Button[,] Dügmeler = new Button[8, 8]; for (int i = 0; i < 8; i++) for (int j = 0; j < 8; j++) { Dügmeler[i, j] = new Button(); this.Controls.Add(Dügmeler[i, j]); Dügmeler[i, j].SetBounds(i * 30, j * 20, 30, 20); Dügmeler[i, j].Text = i.ToString() + "," + j.ToString(); Dügmeler[i, j].Click += new System.EventHandler(tiklamaYontemi); } Button sınıfından Dügmeler adında 2 boyutlu dizi tanımı Düğme yaratıldı Yaratılan düğme forma eklendi Düğme ilgili yere taşındı Düğmenin üzerine indeks değeri yazıldı Düğme tıklanınca hangi yönteme gidileceği belirlendi
MDI Formlar MDI (Multiple Document Interface) tipi formlar kullanarak ana formumuzu ebeveyn form diğer formlarımızı ise sadece ana form içinde hareket edebilen çocuk formlar olarak tasarlama imkanına sahip oluruz. Eğer X formunun IsMdiContainer özelliği True yapılırsa ve Y formunun MdiParent özelliğine X formu atanırsa, Y formu X formunun iç formu (çocuk formu) olur ve onun sınırlarının içinde hareket edebilir.
MDI Form Örneği Form1 içinde yer alan formların ebeveyn (parent) formudur. İçindeki formlar bu pencerenin dışına çıkarılamaz
Forma Menü Ekleme Toolbox’ta Menus & Toolbars sekmesi altında MenuStrip nesnesi eklendiği anda formun üzerinde bir menü alanı belirir. Bu menü alanına istediğimiz menü elemanlarını girebiliriz. Bir menü elemanı tıklandığında ne olacağını üstüne çift tıklama ile gidilen Click olayına yazarız. Ana menü elemanları yan yana girilir Alt menü elemanları alt alta girilir Alt menüye yan menü ekledikçe bunun gibi başka yan menüler açılır Eğer Image özelliği ile bir resim seçilirse bu kısımda görünür Menü elemanları «…ToolStripMenuItem» olarak isimlendirilir. Eğer isim girerken & kullanırsak sonrasındaki harfin altı çizili olur (&Yeni -> Yeni) ve «Alt tuşu + altı çizili harf» kombinasyonu menüye hızlı erişim sağlanır
Not Defteri Pogramı Menüye kısayol tuşu atamak için ShortcutKeys özelliği kullanılabilir (bu kısayolun burada görünmesi için ShowShortcutKeys True olmalı) StatusStrip altına eklediğimiz ToolStripStatusLabel ile bu türden bilgiler gösterilebilir
Diyalog Kutuları Windows işletim sisteminde çalışan tüm uygulamalar tarafından kullanılabilen (aslında işletim sisteminin bir parçası olan) bazı diyalog kutuları mevcuttur. Bunlara Toolbox altında Dialogs sekmesinden ulaşılabilir: – Dosya Açma (OpenFileDialog) – Dosya Kaydetme (SaveFileDialog) – Yazı Tipi Seçimi (FontDialog) – Renk Seçimi (ColorDialog) – Klasör Seçimi (FolderBrowserDialog) Bunların dışında Printing sekmesi altında PrintDialog kutusu da var
OpenFileDialog
OpenFileDialog kutusunu kullanma Diyalog kutuları ShowDialog yöntemi ile gösterilir: openFileDialog1.ShowDialog(); Diyalog kutusu görüntülendikten sonra kullanıcı bir dosya seçene kadar program bu satırda kalır. Dosya seçildikten sonra diyalog kutusu kapanır ve dosyanın ilgili metin kutusuna aktarılması için aşağıdaki kodu kullanabiliriz: textBox1.Text = File.ReadAllText( openFileDialog1.FileName, Encoding.UTF8); Fakat kullanıcı bir seçim yapmadan ESC tuşu ile diyalog kutusunu kapatırsa, dosya ismi olmadan açma yapılmaya çalışılacağı için bu satır hata verir. Bundan korunmak için OpenFileDialog sınıfının FileOk olayı altında kodumuzu yazmak daha doğru olacaktır (örnek koda bakınız) Diğer diyalog kutularının kullanımı için de örnek kodu inceleyiniz