- Katılım
- 28 Ocak 2020
- Mesajlar
- 19.231
- Makaleler
- 52
- Çözümler
- 460
Merhabalar.
Bugün bir programı modern gösteren çoklu tema yapımını anlatmaya çalışacağım.
Öncelikle bir proje oluşturuyoruz.
Form tasarımımız bu şekilde olması yeterli.
2 adet RadioButton ekledik.
Şimdi sıra programlama kısmında.
Genel olarak ayar dosyaları için
[CODE lang="csharp" title="Başvurular"]using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;[/CODE]
Öncelikle gerekli başvurularımızı tanımlıyoruz.
[CODE lang="csharp" title="Yüklemeden önce"] private void Form1_Load(object sender, EventArgs e){
try{
string theme_detect = @"ayarlar\tema_ayari.ini"; // AYAR DOSYASI YOLU
if (File.Exists(theme_detect)){ // DOSYA VAR MI YOK MU?
StreamReader read_theme = File.OpenText(theme_detect); // VAR İSE DOSYA OKUMA
string theme_text = read_theme.ReadLine();
string get_theme = theme_text.Trim();
read_theme.Close();
if (get_theme == "theme_white"){ // AÇIK TEMA GELİR İSE
theme_light(); check_light.Checked = true;
}else if (get_theme == "theme_dark"){ // KOYU TEMA GELİR İSE
theme_dark(); check_dark.Checked = true;
}else{ // DEĞER 2 DEĞER DIŞINDA FARKLI BİR DEĞER GELİRSE
theme_light(); check_light.Checked = true;
}
}else{ // YOK İSE YAPILACAK İŞLEM
theme_light(); check_light.Checked = true;
}
}catch (Exception){ }
}
private void theme_light(){
BackColor = Color.WhiteSmoke;
check_light.ForeColor = Color.Black;
check_dark.ForeColor = Color.Black;
}
private void theme_dark(){
BackColor = Color.FromArgb(45, 45, 45);
check_light.ForeColor = Color.White;
check_dark.ForeColor = Color.White;
}[/CODE]
Ardından form açılmadan önce yapılması gereken kodlama işlemlerini yapıyoruz. Burada 2 adet Void var. Birisi beyaz tema için diğer ise koyu tema için.
[CODE lang="csharp" title="Ayarları Kayıt Etme"] private void check_light_CheckedChanged_1(object sender, EventArgs e){
theme_light();
try{
string main_folder = "ayarlar";
if (Directory.Exists(main_folder)){ // KLASÖR VAR MI YOK MU
write_theme_light();
}else{
Directory.CreateDirectory(main_folder); // YOKSA KLASÖR OLUŞTUR
write_theme_light(); // ARDINDAN YAZMA İŞLEMİNİ YAP
}
}catch (Exception){ }
}
private void check_dark_CheckedChanged_1(object sender, EventArgs e){
theme_dark();
try{
string main_folder = "ayarlar";
if (Directory.Exists(main_folder)){ // KLASÖR VAR MI YOK MU
write_theme_dark();
}else{
Directory.CreateDirectory(main_folder); // YOKSA KLASÖR OLUŞTUR
write_theme_dark(); // ARDINDAN YAZMA İŞLEMİNİ YAP
}
}catch (Exception){ }
}
private void write_theme_light(){
try{
StreamWriter write_theme = new StreamWriter(@"ayarlar\tema_ayari.ini"); // YAZMA İŞLEMİ İÇİN GEREKLİ DOSYA KONUMUNU VE İSMİNİ BELİRLİYORUZ
write_theme.WriteLine("theme_white"); // YAZILAN DEĞERİ GİRİYORUZ
write_theme.Close(); // DOSYA ERİŞİMİNİ KAPATIYORUZ
}catch (Exception){ }
}
private void write_theme_dark(){
try{
StreamWriter write_theme = new StreamWriter(@"ayarlar\tema_ayari.ini"); // YAZMA İŞLEMİ İÇİN GEREKLİ DOSYA KONUMUNU VE İSMİNİ BELİRLİYORUZ
write_theme.WriteLine("theme_dark"); // YAZILAN DEĞERİ GİRİYORUZ
write_theme.Close(); // DOSYA ERİŞİMİNİ KAPATIYORUZ
}catch (Exception){ }
}[/CODE]
Ve son olarak verileri kayıt etme işlemine geçiyoruz. Burada klasör içerisinde kayıt etme işlemi ile yapıldı. Eğer klasör yok ise otomatik oluşturuluyor.
Görüldüğü üzere tüm işlemler otomatik olarak gerçekleşmektedir.
Görüldüğü üzere program ayarları değiştikten sonra veriyi kayıt ediyoruz. Ardından sonraki açılışta aynı tema ile açılmasını sağlıyoruz.
Açık tema bu şekilde.
Koyu tema bu şekilde.
Buna benzer olan çoklu dil destekli yazılım geliştirme rehberimizi inceleyebilirsiniz.
Umarım işinize yarar. Bu temel bir işlemdir. Çok daha gelişmiş yapılar yapabilirsiniz.
Bugün bir programı modern gösteren çoklu tema yapımını anlatmaya çalışacağım.
Öncelikle bir proje oluşturuyoruz.
Form tasarımımız bu şekilde olması yeterli.
2 adet RadioButton ekledik.
Şimdi sıra programlama kısmında.
Genel olarak ayar dosyaları için
.ini
formatı kullanılır. Siz farklı bir metin dosya uzantısı kullanabilirsiniz.[CODE lang="csharp" title="Başvurular"]using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;[/CODE]
Öncelikle gerekli başvurularımızı tanımlıyoruz.
[CODE lang="csharp" title="Yüklemeden önce"] private void Form1_Load(object sender, EventArgs e){
try{
string theme_detect = @"ayarlar\tema_ayari.ini"; // AYAR DOSYASI YOLU
if (File.Exists(theme_detect)){ // DOSYA VAR MI YOK MU?
StreamReader read_theme = File.OpenText(theme_detect); // VAR İSE DOSYA OKUMA
string theme_text = read_theme.ReadLine();
string get_theme = theme_text.Trim();
read_theme.Close();
if (get_theme == "theme_white"){ // AÇIK TEMA GELİR İSE
theme_light(); check_light.Checked = true;
}else if (get_theme == "theme_dark"){ // KOYU TEMA GELİR İSE
theme_dark(); check_dark.Checked = true;
}else{ // DEĞER 2 DEĞER DIŞINDA FARKLI BİR DEĞER GELİRSE
theme_light(); check_light.Checked = true;
}
}else{ // YOK İSE YAPILACAK İŞLEM
theme_light(); check_light.Checked = true;
}
}catch (Exception){ }
}
private void theme_light(){
BackColor = Color.WhiteSmoke;
check_light.ForeColor = Color.Black;
check_dark.ForeColor = Color.Black;
}
private void theme_dark(){
BackColor = Color.FromArgb(45, 45, 45);
check_light.ForeColor = Color.White;
check_dark.ForeColor = Color.White;
}[/CODE]
Ardından form açılmadan önce yapılması gereken kodlama işlemlerini yapıyoruz. Burada 2 adet Void var. Birisi beyaz tema için diğer ise koyu tema için.
[CODE lang="csharp" title="Ayarları Kayıt Etme"] private void check_light_CheckedChanged_1(object sender, EventArgs e){
theme_light();
try{
string main_folder = "ayarlar";
if (Directory.Exists(main_folder)){ // KLASÖR VAR MI YOK MU
write_theme_light();
}else{
Directory.CreateDirectory(main_folder); // YOKSA KLASÖR OLUŞTUR
write_theme_light(); // ARDINDAN YAZMA İŞLEMİNİ YAP
}
}catch (Exception){ }
}
private void check_dark_CheckedChanged_1(object sender, EventArgs e){
theme_dark();
try{
string main_folder = "ayarlar";
if (Directory.Exists(main_folder)){ // KLASÖR VAR MI YOK MU
write_theme_dark();
}else{
Directory.CreateDirectory(main_folder); // YOKSA KLASÖR OLUŞTUR
write_theme_dark(); // ARDINDAN YAZMA İŞLEMİNİ YAP
}
}catch (Exception){ }
}
private void write_theme_light(){
try{
StreamWriter write_theme = new StreamWriter(@"ayarlar\tema_ayari.ini"); // YAZMA İŞLEMİ İÇİN GEREKLİ DOSYA KONUMUNU VE İSMİNİ BELİRLİYORUZ
write_theme.WriteLine("theme_white"); // YAZILAN DEĞERİ GİRİYORUZ
write_theme.Close(); // DOSYA ERİŞİMİNİ KAPATIYORUZ
}catch (Exception){ }
}
private void write_theme_dark(){
try{
StreamWriter write_theme = new StreamWriter(@"ayarlar\tema_ayari.ini"); // YAZMA İŞLEMİ İÇİN GEREKLİ DOSYA KONUMUNU VE İSMİNİ BELİRLİYORUZ
write_theme.WriteLine("theme_dark"); // YAZILAN DEĞERİ GİRİYORUZ
write_theme.Close(); // DOSYA ERİŞİMİNİ KAPATIYORUZ
}catch (Exception){ }
}[/CODE]
Ve son olarak verileri kayıt etme işlemine geçiyoruz. Burada klasör içerisinde kayıt etme işlemi ile yapıldı. Eğer klasör yok ise otomatik oluşturuluyor.
Görüldüğü üzere tüm işlemler otomatik olarak gerçekleşmektedir.
Görüldüğü üzere program ayarları değiştikten sonra veriyi kayıt ediyoruz. Ardından sonraki açılışta aynı tema ile açılmasını sağlıyoruz.
Açık tema bu şekilde.
Koyu tema bu şekilde.
Buna benzer olan çoklu dil destekli yazılım geliştirme rehberimizi inceleyebilirsiniz.
Rehber: C# sistem diline duyarlı yazılım geliştirme
Merhabalar. Yazılımcı arkadaşlar global bir yazılım geliştirecekleri zaman gerekli şeylerden birisi çoklu dil desteğidir (multi language). Bunun 2 yöntemi var. WMI (Windows Management Instrumentation) Sistem Kültür Bilgisi WMI: Eski bir teknolojidir. Günümüz şartları için verimsiz...
www.technopat.net
Umarım işinize yarar. Bu temel bir işlemdir. Çok daha gelişmiş yapılar yapabilirsiniz.
Son düzenleme: