C# CheckState İçin Özel Metod Oluşturmak

Mayıs 16, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selamlar,
C# projelerimde chechkbox kullandığımda gridview üzerinden veya veritabanından veri çekip, verilere göre checkbox nesnesini işaretli veya boş bırakmak için bir sürü kod yazıyordum.
Örneğin;
C#
// verileri alacak olan kodlar

if (AktifMi == 1)
    CHK_PASIF.CheckState = CheckState.Checked;
else
    CHK_PASIF.CheckState = CheckState.Unchecked;

// yada

if (AktifMi == 1) 
    // AktifMi  değişkenini int olarak alırsanız bu şekilde olur
    // AktifMi  değişkenini bool olarak alırsanız "if (AktifMi)" şeklinde kullanabilirsiniz.
    // çünkü if içerisinden her zaman "true" değer döner. Yani yazıdğınız değişken "true" ise 
    // if çalışır false ise else çalışır.
    CHK_PASIF.Checked = true;
else
    CHK_PASIF.Checked = false;

// arkadaşlar ilk yöntemi kullanmak çok daha iyidir.
// ikinci yöntemde bazen nedense işlemleri yapmadığını farkettim.
// ama artık bu yöntemlere gerek kalmadı 
Her checkbox için 4 satır kod yazmamız gerekiyor. Bugün bu kodları yazmak zoruma gitti ve daha kısa bir yol denemek istedim ve oldu. Ana sistem class dosyama bir metod ekledim ve bu işlemi tek satıra indirdim. Çokta güzel oldu..
NOT 1: İf veya Else bloklarında eğer tek satırlık işlem kullanacaksanız süslü parantezleri silebilirsiniz.
Şimdi yazdığım metodu paylaşayım.
C#
        public static CheckState Checked_Kontrol(int deger)
        {
            CheckState cs = new CheckState();
            switch (deger)
            {
                case 0:
                    cs = CheckState.Unchecked;
                    break;
                case 1:
                    cs = CheckState.Checked;
                    break;
                case 2:
                    cs = CheckState.Indeterminate;
                    break;
                default:
                    MessageBox.Show(deger.ToString() + " Değeri bir checkbox için geçerli değil", "Değer Hatalı", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    break;
            }
            return cs;
        }
Dikkat ettiyseniz yukarıdaki kodda switch içerisinde "2" de var. Arkdaşlar bu "2" nin "Indeterminate" yani "içi dolu" anlamına gelir. Indeterminate'in değerini bilmiyordum onu da şu şekilde buldum.


C#
//formunuza 1 buton ve 3 checkbox ekleyin
private void Button1_Click(object sender, EventArgs e)
{
     MessageBox.Show(Convert.ToInt32(checkBox1.CheckState).ToString());
     MessageBox.Show(Convert.ToInt32(checkBox2.CheckState).ToString());
     MessageBox.Show(Convert.ToInt32(checkBox3.CheckState).ToString());
}
//bu şekilde sizde değerlerini görebilirsiniz.
NOT 2: Indeterminate durumu checkbox " işaretli mi? " sorusuna true değer verir. Yani içi dolu olsa da işaretlenmiştir. Indeterminate durumlarında özellikle işaretli mi? içi dolu mu? gibi soruyu ikiye ayırmak gerekir.
Gelelim kullanımına;
C#
int pasif = null;
// pasif değişkenine veritabanından çektiğimiz veriyi atadık.
CHK_PASIF.CheckState = MyClass.Checked_Kontrol(pasif);

//  ya da

CHK_PASIF.CheckState = MyClass.Checked_Kontrol(Convert.ToInt16(dt.pers.Rows[0]["Pasif"]));

NOT 3: Bu gibi yerlerde Convert.ToInt16() kullanmanız performans açısından iyi olacaktır çünkü 32, 16'ya göre RAM'de daha fazla yer kaplar. 64 daha da fazla....
NOT 4: DevExpress nesnelerinden checkEdit' ler VS üzerinden özellikler kısmından " Indeterminate " olarak işaretlenmiyor ama Windows nesnelerinde varsayılan olarak " Indeterminate " olarak getirebilrisiniz. DevExpress için kod olarak denemedim.
Bu dersimzide bu kadar arkadaşlar
Diğer derslerimizde görüşmek üzere.
Bol Kodlu Günler...
https://mustafabukulmez.com/

0 Yorum:

Win10 Tarih Formatı Düzenlemek (C# Uygulamaları Tarih Sorunları)

Mayıs 16, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selamlar 
Bu dersimizde # uygulamalarında tarih formatlama işlemleri sırasında win10 sistemlerde tarig formatlamada hatalar ile karşılaşıyoruz. En büyük sorun ise win10 da tarihler 1.1.2017 şeklinde olmasıdır. Burada bizim sitediğimiz format 01.01.2017 şekilnde olmasıdır.
Win10 sistemlerde;



İlk önce yukarıdaki ayar ekranıangeliyoruz ve  "g.aa.yyyy" olan yeri elle "gg.aa.yyyy" yapıyoruz. Bu şekilde sistem tarih formatımız 01.01.2017 olarak düzenleniyor. Ay kısmında da tek "a" var ise onu da "aa" şeklinde yazınız. Aynı ayar saat içinde geçerlidir. 
NOT: Yazılımsal olarak nasıl yapabiliriz onun kodlarını vermeyeceğim çünkü henüz bu konu hakkında kod bazlı bir çalışma yapmadım. Bunun sebebi ise prnsip olarak kodları deneyip çalıştığını görmeden paylaşmıyorum. 
Bu dersimizde bu kadar arkadaşlar diğer derslerimizde görüşmek üzere.
Bol Kodlu Günler.
https://mustafabukulmez.com/

0 Yorum:

C# Program Üzerinden PDF, Excel vs. Açmak

Mayıs 16, 2017 Mustafa BÜKÜLMEZ 0 Yorum


Selamlar, 
Bu desimizde C# da program çalışırken bilgisayarımızdaki bir dosyayı açma işlemlerini göreceğiz. Örneğin siparişler tablonuzda müşteriden gelen sipariş formunu da sisteme eklemek istiyorsunuz.ve dosya yolu üzerinden daha sonra örn çıft yıklayarak o formu görmek istiyorsunuz. 
NOT: bu projede devexpress nesneleri kullanılmıştır.
Bu gibi bir senaryoda ne yapmamız gerekiyor? İşte size lazım olan kodlar aşağıdaki gibidir.
C#
try
  {
      int index = gridView1.FocusedRowHandle;
      string yol = gridView1.GetRowCellValue(index, "DOSYA_YOLU").ToString();
      FileInfo fi = new FileInfo(yol);
      System.Diagnostics.Process.Start(yol);
  }
  catch (Exception)
  {
      MessageBox.Show("Bu sipariş için dosya yüklenmemiş.", "Dosya Yok", MessageBoxButtons.OK, MessageBoxIcon.Hand);
  }
Devexpress kullanmıyorsanız;
C#
int index = gridView1.FocusedRowHandle;
string yol = gridView1.GetRowCellValue(index, "DOSYA_YOLU").ToString();
Bu satıları kendinize göre değiştiebilirsniz. Burada devexpress gridcontrol üzerideki dosya_yolu hücresinde yer alan dosya yolu bilgisini alıyorum. 
Yukarıdki 2 satır haricindeki diğer kodlar sorunsuz çalışacaktır.
Bu dersimizde bu kadar arkadaşlar diğer derslerde görüşmek üzere.
Bol Kodlu Günler
https://mustafabukulmez.com/

0 Yorum:

C# INI Dosyasına Veri Yazma ve Okuma [Kernel32.DLL]

Mayıs 16, 2017 Mustafa BÜKÜLMEZ 0 Yorum


Selamlar arkadaşlar,
Bu dersimizde c# da ini dosyalarına verileri nasıl yazarız nasıl okuruz onu göreceğiz.
Bu işlemi yaparken windows DLL'lerini kullanacağız. İlk olarak projemize
C#
using System.Runtime.InteropServices;
namespace' ini ekliyoruz. Sonrasında ise ini dosyasına veri yazabilmek için
C#
public Form1()
{
     InitializeComponent();
}
 
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);
kodlarını projemize ekliyoruz. INI dosyasına verileri yazmak için aşağıdaki metodu da projemize ekliyoruz.
C#
 bool WriteINI(string SectionName, string KeyName, string StringToWrite, string INIFileName)
        {
            bool Return;
            Return = WritePrivateProfileString(SectionName, KeyName, StringToWrite, INIFileName);
            return Return;
        }
Kullanımı da şu şekilde;
C#
WriteINI("AnaBaşlık", "AltBaşlık", "Değer", "C:System.INI");
Daha iyi anlayabilmeniz için bir görüntüsünü de vereyim.
Gördüğünüz gibi kaydı bu şekilde bu şekilde yapıyor.

Şimdi verilerimizi yazdık sıra geldi okumaya..
İçerisine veri yazdığımız INI dosyasını okuyabilmek için bu kodları projemize yazıyoruz.
C#
[DllImport("kernel32.dll")]
static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
Aşağıdaki kodlar ile dosyamızı okuyoruz. Bu verileri okurken de StringBuilder kullanıyoruz.
C#
 private void veriOku()
        {
            StringBuilder sb = new StringBuilder(5000);
            GetPrivateProfileString("AnaBaşlık", "AltBaşlık", "", sb, sb.Capacity, "C:System.INI");
            textbox1.Text = sb.ToString();
            sb.Clear();
        }
Hepsi bu kadar arkadaşlar.
Bu dersimizde bu kadar.
Bol Kodlu Günler.
https://mustafabukulmez.com/

0 Yorum:

C# OpenFileDialog kullanımı

Mayıs 16, 2017 Mustafa BÜKÜLMEZ 0 Yorum

Selamlar arkdaşlar,
Bu dersimizde C# OpenFileDialog kullanımı öğreneceğiz.
Hemen kodlarımıza geçelim.
C#
OpenFileDialog file = new OpenFileDialog();  
Bu kod ile OpenFileDialog tanımlamasını yapıyoruz.
C#
private void btnDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    file.ShowDialog();  // openfiledialog ekranını açıyoruz.
}  
C#
private void btnDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    file.Filter = "Excel Dosyası |*.xlsx";   
    // dosya filtresi için bu kodu kullanıyoruz. Şuan sadece xlsx dosyalarını görecektir.
    file.ShowDialog();  
}  
C#
private void btnDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    // burada gördüğünüz gibi iki adet filtre verdik.
    file.FilterIndex = 2;  
    // bu kod ile varsayılan olarak 2. filtre ile açılacaktır.
    file.ShowDialog();  
}  
C#
private void btnDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    file.InitialDirectory = "C:";  
    // bu kod ile her zaman C bölümünü açacaktır. Yani açıldığında C bölümünü gösterecek.
    file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    file.FilterIndex = 2;  
    file.ShowDialog();  
}  
C#
private void btnDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    file.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);  
    //öncekinden farkı her açıldığında masaüstünü gösterecektir.
    // masaüstünü göstermek istiyorum ama kullanıcı adı farkından olmuyor diye düşünüyorsanız
    file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    file.FilterIndex = 2;  
    file.ShowDialog();  
}  
C#
private void btnDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    //file.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);  
    file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    file.FilterIndex = 2;  
    file.RestoreDirectory = true;     
    // bu kod ile her açıldığında açılan bir önceki klasörü açacaktır.
    file.ShowDialog();  
}  
C#
private void btnDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    file.FilterIndex = 2;  
    file.RestoreDirectory = true;  
    file.CheckFileExists = false;  
    // bu kod dosya adı kısmına bir isim yazdığınızda dosya var mı yok mu kontrolünü yapar.
    file.ShowDialog();  
}  
C#
private void btnDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    file.FilterIndex = 2;  
    file.RestoreDirectory = true;  
    file.CheckFileExists = false;  
    file.Title = "Excel Dosyası Seçiniz..";  
    // pencerenin üstünde varsayılan olarak "Aç" yazar bu kod ile başlığı değiştirebiliriz.
    file.ShowDialog();  
}  
C#
private void buttonDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    //file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    file.FilterIndex = 2;  
    file.RestoreDirectory = true;  
    file.CheckFileExists = false;  
    file.Title = "Excel Dosyası Seçiniz..";  
    file.ShowDialog();  
  
    string DosyaYolu = file.FileName;  
    // seçilen dosyanın tüm yolunu verir
    string DosyaAdi = file.SafeFileName;  
    // sçeilen dosyanın adını verir.
}  
Bazı durumlarda dosyanın seçilip seçilmediğini kontrol etmemiz gerekmektedir. Normal şartlarda dosya adı seçilmediğinde geri null değer döner. Çoğu zaman sorun yaşamayız ama bazı durumlarda kontrol etmemiz gerekmektedir. Bu gibi durumlarda;
C#
private void buttonDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    file.FilterIndex = 2;  
    file.RestoreDirectory = true;  
    file.CheckFileExists = false;  
    file.Title = "Excel Dosyası Seçiniz..";  
  
    if (file.ShowDialog() == DialogResult.OK)  
    {  
        // dosya seçildi ise
        string DosyaYolu = file.FileName;  
        string DosyaAdi = file.SafeFileName;  
    }  
}  
Genel olarak bu kodlar işimize yarar ama bazen çoklu seçim yapmamız gerekir. Bu gibi durumlarda;
C#
private void buttonDosyaSec_Click(object sender, EventArgs e)  
{  
    OpenFileDialog file = new OpenFileDialog();  
    //file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls";  
    file.FilterIndex = 2;  
    file.RestoreDirectory = true;  
    file.CheckFileExists = false;  
    file.Title = "Excel Dosyası Seçiniz..";  
    file.Multiselect = true;  
    // bu kod çoklu seçim yapabilmemizi sağlar.
  
    if (file.ShowDialog() == DialogResult.OK)  
    {  
        string DosyaYolu = file.FileName;  
        string DosyaAdi = file.SafeFileName;  
    }  
}  
seçilen dosya birden fazla ise dosya yollarını FileNames, dosya adılarını ise SafeFileNames' e string dizi olarak setlemektedir. Bu dizilerdeki bilgileri nasıl alacağımıza gelirsek de;
C#
string[] dosya = fileNames;
for (int i = 0; i < fileNames.Length; i++)
{
     ListViewItem li = new ListViewItem(dosya);
     ListView1.Items.Add(li);
}
label1.Text = dosya.Length.ToString()+" dosya eklendi.";

C#
file.Reset();
// openfiledialog ayarlarını sıfırlar
Bu dersimizde bu kadar arkadaşlar diğer derslerde görüşmek üzere.
Bol Kodlu Günler
https://mustafabukulmez.com/

0 Yorum: