C#’ta Form Application projesi ile TextBox içindeki bir metnin yazı tipi, yazı boyutu ile biçim özellikleri değiştirilmiştir.
C# komutlarıyla font özelliklerini değiştirmek için kullanılan form üzerinde metin girilen bir TextBox; font diyalog kutusunu açan bir buton; font seçimi, font boyutu ve rengi için birer ComboBox; metin boyutunu artırıp azaltmak için birer Button; yazıyı kalın, italik ve altı çizili yapmak için de Button görünümlü birer CheckBox; hızlı font seçimi için de FontDialog kullanılmıştır.
Uygulamanın ekran görüntüsü şu şekildedir:
Font Diyalog Penceresi Açma
Teker teker uğraşmak yerine sistem font penceresi kullanılarak stil uygulaması mümkündür.
1 2 | fontDialog1.ShowDialog(); textBox1.Font = fontDialog1.Font; |
C# ile Yazı Tipi Değiştirme
Fontun eski özellikleri olan boyutu ve stil özelliklerini yedeklemek için eski adında Font sınıfından türetilmiş bir nesne kullanılır. textBox1 nesnesinin font özellikleri, yeni oluşturulan bu nesneye aktarılır. Ardından da textBox1’in yeni Font özelliklerini ayarlamak için yeni bir font tanımlaması yapılır. cbFont isimli ComboBox‘tan seçilen yazı tipinin adı ve eski fontun Size (boyut) ve Style özellikleri parametre olarak gönderilir.
1 2 | Font eski = textBox1.Font; textBox1.Font = new Font(cbFont.Text, eski.Size, eski.Style); |
C# ile Yazı Boyutu Değiştirme
Yazı tipinde olduğu gibi yine eski değerleri tutan bir nesne oluşturuluyor. Ardından da eski yazı tipini FontFamily ile parametre olarak gönderiyoruz. Önceki koda göre yapılması gereken tek değişiklik, Size yerine gelmesi gereken değerin cbBoyut isimli ComboBox’tan alınmasıdır.
1 2 | Font eski = textBox1.Font; textBox1.Font = new Font(eski.FontFamily, float.Parse(cbBoyut.Text), eski.Style); |
C# ile Yazı Boyutunu Artırma
Eski boyutun üzerine her seferinde 1 ekleyerek gerçekleştirilir.
1 2 | Font eski = textBox1.Font; textBox1.Font = new Font(eski.FontFamily, eski.Size + 1, eski.Style); |
C# ile Yazı Boyutunu Küçültme
1 2 | Font eski = textBox1.Font; textBox1.Font = new Font(eski.FontFamily, eski.Size - 1, eski.Style); |
Eski boyuttan her seferinde 1 çıkarılarak gerçekleştirilir.
C# ile Yazı Rengini Değiştirme
Yazı rengini değiştirek için cbRenk isminde bir ComboBox oluşturulmuştur. Kullanıcının işaretlediği seçeneğe göre yazı rengi değiştirimektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | switch (cbRenk.Text) { case "Siyah": textBox1.ForeColor = Color.Black; break; case "Kırmızı": textBox1.ForeColor = Color.Red; break; case "Sarı": textBox1.ForeColor = Color.Yellow; break; case "Yeşil": textBox1.ForeColor = Color.Green; break; case "Mavi": textBox1.ForeColor = Color.Blue; break; } |
C# ile Yazının Stil Özelliklerini Değiştirme: VEYA İşlemi
Yazıdaki form görüntüsünü dikkatle inceleyenler, form üzerinde hiç CheckBox görünmediği fark etmiştir. CheckBox yerine kalın (B), italik (I) ve altı çizili (A) anlamında görünen nesneler Appearance özelliği Button olarak ayarlanmış CheckBox‘lardır.
Belki şu ana kadar C#’ta görebileceğiniz en ilginç operatör: |=
1 2 3 4 5 6 7 | FontStyle stil = FontStyle.Regular; stil |= cbKalin.Checked ? FontStyle.Bold : stil; stil |= cbItalik.Checked ? FontStyle.Italic : stil; stil |= cbAltiCizili.Checked ? FontStyle.Underline : stil; textBox1.Font = new Font(textBox1.Font, stil); |
Bu atama operatörü, VEYA işlemi ile birlikte atama yapar. Stil özelliklerini değiştiren yukarıdaki kod bloğu yerine aşağıdaki kodlar, yeni öğrenenler için daha açıklayıcı olabilir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | FontStyle stil = FontStyle.Regular; if (cbKalin.Checked) { stil = stil | FontStyle.Bold; } if (cbItalik.Checked) { stil = stil | FontStyle.Italic; } if (cbAltiCizili.Checked) { stil = stil | FontStyle.Underline; } textBox1.Font = new Font(textBox1.Font, stil); |
Burada da görüldüğü gibi, | operatörü ile VEYA işlemi gerçekleştirilir. Böyle bir şeye sebep duyulması, FontStyle özelliğinin bitsel özelliklere göre yapılandırılmış olmasıdır. Bunun bu şekilde yapılma sebebi, birden fazla stil seçeneğinin hepsinin özellik olarak atanabilmesini sağlamaktır. Örneğin kalın ve italik olan bir metne, kolaylıkla altı çizili özelliği de eklenebilmekte, istenilen özellikler de devre dışı bırakılabilmektedir.
Font özelliklerini ayarlamak için öncelikle FontStyle.Regular şeklinde, hiçbir stil özelliğini içermeyen tanımlamayı oluşturulan stil değişkenine aktarılır. Ardından kalın, italik ve altı çizili CheckBox’lardan hangileri seçilmişse bunlar VEYA işlemi ile mevcut stil değişkeni özelliklerinin üzerine yazılarak ilgili özellik aktif edilir.
Konuyla ilgili merak ettiklerini yorum olarak bırakabilirsiniz.
Projedeki form içerisindeki kodların birleştirilmiş hali şu şekildedir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | 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 Biçim_Özellikleri { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btPencereGoster_Click(object sender, EventArgs e) { fontDialog1.ShowDialog(); textBox1.Font = fontDialog1.Font; } private void btArtir_Click(object sender, EventArgs e) { Font eski = textBox1.Font; textBox1.Font = new Font(eski.FontFamily, eski.Size + 1, eski.Style); } private void cbFont_SelectedIndexChanged(object sender, EventArgs e) { Font eski = textBox1.Font; textBox1.Font = new Font(cbFont.Text, eski.Size, eski.Style); } private void cbBoyut_SelectedIndexChanged(object sender, EventArgs e) { Font eski = textBox1.Font; textBox1.Font = new Font(eski.FontFamily, float.Parse(cbBoyut.Text), eski.Style); } private void btAzalt_Click(object sender, EventArgs e) { Font eski = textBox1.Font; textBox1.Font = new Font(eski.FontFamily, eski.Size - 1, eski.Style); } private void stilAyarla(object sender, EventArgs e) { FontStyle stil = FontStyle.Regular; stil |= cbKalin.Checked ? FontStyle.Bold : stil; stil |= cbItalik.Checked ? FontStyle.Italic : stil; stil |= cbAltiCizili.Checked ? FontStyle.Underline : stil; textBox1.Font = new Font(textBox1.Font, stil); } private void cbRenk_SelectedIndexChanged(object sender, EventArgs e) { switch (cbRenk.Text) { case "Siyah": textBox1.ForeColor = Color.Black; break; case "Kırmızı": textBox1.ForeColor = Color.Red; break; case "Sarı": textBox1.ForeColor = Color.Yellow; break; case "Yeşil": textBox1.ForeColor = Color.Green; break; case "Mavi": textBox1.ForeColor = Color.Blue; break; } } } } |
merhaba sizin bu kodlara göre bir uygulama yaptım. 3 tane cbox içine family ,size ,style degerleri giriyoruz.richtextbox içinde seçilen yazıyı cboxlardan seçilene göre değiştirecek.
sorunşu koç gibi Türkçe karakter olan kelimeleri bir family değiştiriyor sonra hiç bir özelliğini değiştirmiyor. selecektion.family ,size,style özellikleri bazen çalışıyor sorun yok bazen arada hata veriyor.
niye böyle randımansızlık var bilginiz var mı?
Ben herhangi bir sorunla karşılaşmadım. Bu durumun bilgisayarın bölgesel dil ayarlarından bağımsız olması gerek ancak başka ihtimal gelmiyor aklıma. Bölgesel ve klavye dil ayarlarınız tamamen Türkçe mi?