Formun BorderStyle Özelliğinin Dinamik Değiştirilebilmesi

Bu yazımda csharpta bir windows form uygulaması içinde kullanacağımız bir panel içinde yer alan formun kenar özelliklerinin nasıl değiştirilebileceğine değineceğim. Bir windows form projesi oluşturuyorum, adını PanelForm verdim.

Açılan formuma button ve panel kontrollerimi ekliyorum.

Panel kontrolü csharp windows form uygulamalarında diğer kontrolleri içinde barındırması için eklenirler. Aslında bir uygulamanın farklı farklı sayflarını bir panelin içinde göstermek gibi düşünebilirsiniz. Örnek olarak birden fazla radiobutton kontrolünün yer aldığı bir panel formu oluşturabilirsiniz.

Panel kontrolünü forma eklediğinizde default olarak border yani çerçeve hatlarının olmadığını göreceksiniz. Bu kenarların belirli olması için Panel kontolünün BorderStyle özelliğinden değiştirebilirsiniz. Name özelliğini panForm yaptım.

Önce formuma bir adet panel ekledim. BorderStyle özelliğini fixed3D yaptım. Bir adette buton ekliyorum, text özelliğini Form Göster yaptım. Name özelliğini de btnFormGoster yaptım.

Snra projeme solution explerer alanında sağ tıklıyor ve yeni bir öğe daha ekliyorum. Add dedim, new item dedim ve windows form seçiyorum. Bu forma bir adet label bir adet buton ekliyorum. Label’in text özelliğine bir şeyler yazdım, ad soyad gibi. Butonun text özelliğine de tıkla yazdım, adını da btnTikla verdim. btnTikla’ya çift tıklıyor ve click eventinde aşağıdaki kodları yazıyorum:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PanelForm
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void btnTikla_Click(object sender, EventArgs e)
        {
            MessageBox.Show("İsmail GÜRSOY");
        }
    }
}

İkinci formumu da Panel kontolüne ekleyeceğim ve ana form yani ilk formum üzerinden buraya ulaşabileceğim.

İlk formuma dönüyorum ve orada yer alan btnFormGoster butonuna çift tıklıyor ve bu butonumun click eventine aşağıdaki kodları yazıyorum.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PanelForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnFormGoster_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2() { Dock = DockStyle.Fill, TopLevel = false, TopMost = true };
        }
    }
}

Kodlarda görüleceği üzere TopLevel özelliğini false ve TopMost özelliğini ise True olarak ayarladım. TopLevel form en üstte yer alan form’dur yani kendi üstünde daha ana form yer almaz, parent tipinde bir formdur yani. Bir uygulamanın asıl ana formudur.

TopMost ise ana form değil ama her bir alt forumla örtüşen bir form olarak düşünebilirsiniz. Her form sayfasında yer alan bul ve değiştir kısımları gibi.

İlk formuma bir adet label ve bir adet combox ekliyorum. Label text özelliğini Form Stili: yaptım.

Combobox ismini ise cmbFormStili yaptım. Comboxı seçiyor ve sağ üstte yer alan minik oka tıklayıp Edit Items diyorum.

Combobox itemlarına FormBorderStyle özelliklerini giriyorum. Buraya girdiğim item değerleri:

  • None
  • FixedSingle
  • Fixed3D
  • FixedDialog
  • Sizable
  • FixedToolWindow
  • SizableToolWindow

Tekrar ana formuma yani ilk formuma dönüyor ve btnFormGoster butonunun click eventinde kodları aşağıdaki gibi düzenliyorum.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PanelForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnFormGoster_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2() { Dock = DockStyle.Fill, TopLevel = false, TopMost = true };
            frm.FormBorderStyle = (FormBorderStyle)cmbFormStili.SelectedIndex;
            this.panForm.Controls.Add(frm);
        }
    }
}

Uygulamamı çalıştırında solda combobox üzerinden stil seçiyorum ve sağda Formu Göster’e basınca ilgili stilde formumu görebilirim. Formu kapatıp, combobox’tan başka bir stil seçince bu sefer seçtiğim diğer şekilde görebilirim.

Şimdilik bu kadar, görüşmek üzere 😊

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir