KMRT BSRN

"Hiç kimsenin ilgisine ihtiyaç duymadığın gün olgunlaşırsın. Hiç kimseden beklentiye girmediğin gün yara almazsın. Ve hiç kimseye bağımlı kalmazsan kazanırsın." OSHO

C# – DataGridViewCheckboxCell ‘de Checkbox Değer Değişimini Yakalamak

3 Yorum


Bir DataGridView üzerinde oluşturduğunuz Checkbox içeren kolonda, Checkbox’ın değerinin değişimini yakalamak istiyorsanız.. DataGridView ‘in iki adet event’ine şu kodları yazmanız gerekebilir. Tabii farklı yollarda mevcuttur. Fakat ben genelde aşağıdaki yöntemi kullanıyorum..

DataGridView’ın;

CurrentCellDirtyStateChanged” olayında, datagridview ‘ın editing(düzenleme, değişiklik yapma) işlemini sonlandırıyorum.
CellContentClick” olayında ise artık elimde işaretlenmiş ya da iaşreti kaldırılmış bir checkbox mevcuttur. İşleyecek kodumuzu buraya dolduruyoruz.. 🙂

Aşağıdaki kod ile DataGridView üzerinde bir checkbox kolon değeri değiştiğinde, checkbox hücresi hariç diğer hücrelerin yazı renginin kırmızı olması ve üstü çizilmesi sağlanmaktadır..


private void dgvItems_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

    if (this.dgvItems.CurrentCell == null) return;

 

    if (this.dgvItems.CurrentCell.GetType() == typeof(DataGridViewCheckBoxCell))

    {

        if (this.dgvItems.CurrentCell.GetType() == typeof(DataGridViewCheckBoxCell))

        {

            bool isSelected = bool.Parse(this.dgvItems.CurrentRow.Cells[0].Value.ToString());

            DataGridViewCellStyle newStyle = new DataGridViewCellStyle();

            newStyle.ApplyStyle(this.dgvItems.RowTemplate.DefaultCellStyle);

 

            if (isSelected)

            {

                newStyle.ForeColor = Color.Red;

                newStyle.Font = new Font(this.dgvItems.RowTemplate.DefaultCellStyle.Font, FontStyle.Strikeout);

            }

 

            foreach (DataGridViewCell cell in this.dgvItems.CurrentRow.Cells)

            {

                if (cell.GetType() != typeof(DataGridViewCheckBoxCell))

                    cell.Style = newStyle;

            }

        }

    }

}

private void dgvItems_CurrentCellDirtyStateChanged(object sender, EventArgs e)

{

    this.dgvItems.EndEdit();

}


Reklamlar

Yazar: K. Murat BAŞEREN, MBA, MCP

I am a senior software developer, MCP, consultant, blogger, former chemist and software trainer. My interests range from software developer to technology. I am also interested in web development, education, and coffee.

3 thoughts on “C# – DataGridViewCheckboxCell ‘de Checkbox Değer Değişimini Yakalamak

  1. merhaba,

    kodunuzu denedim fakat benimde benzer bir sorunum var. checkbox kolonunu işaretlediğimde herhangi bir şey olmuyor ne zaman satırı değiştirisem o zaman değişim oluyor. sizin kodunuzda da;
    “bool isSelected = bool.Parse(this.dataGridView1.CurrentRow.Cells[0].Value.ToString());” satırında “null reference exeptions” hatası alıyorum.

    Konuyla ilgili yardımcı olursanız sevinirim.

    İyi Günler.

    Beğen

    • Merhaba Erkan;

      Makalede geçen iki event içinde kodlamayı yaptığını düşünüyorum. Onun haricinde Null Reference Exc. almanın sebebi “this.dataGridView1.CurrentRow.Cells[0]” yani gridview’ın ilk kolonunda chekbox’ın olmaması olabilir veya CurrentRow, null geliyor olabilir bunu debug ederek F11 adım adım takip edip kontrol etmen lazım. Checkbox’ı ilk kolonda deneyebilirsin.

      İyi çalışmalar..

      Beğen

  2. Cevabınız için teşekürler. Sorunu çözdüm. ama baya bir zor oldu.

    Beğen

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s