dataGridView1.ColumnCount = 3; dataGridView1.ColumnHeadersVisible = true; dataGridView1.Columns[0].HeaderText = "Öğrenci Adı"; dataGridView1.Columns[1].HeaderText = "Soyad"; dataGridView1.Columns[2].HeaderText = "Adres"; DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn(); combo.Items.AddRange("10A", "And11A", "11C"); combo.HeaderText = "Sınıf"; dataGridView1.Columns.Add(combo); int sayi = dataGridView1.Columns.Count-1; dataGridView1.Columns[sayi].DisplayIndex = 2;
İlk olarak form üzerinde bir DataGridView ekliyoruz daha sonra form load olayına gelip yukarıdaki kodları yazıyoruz kodlarda sıraya ilk olarak DataGridView sütun sayısını belirleyip başlıkların görünür olacağını söylüyoruz, daha sonra DataGridView sütun başlıklarını ekliyoruz. Şimdi sıra geldi DataGridView’e combobox eklemeye bunun için DataGridViewComboBoxColumn sınıfından bir nesne üretip içine Eklenecek olan bilgileri ve sütun başlığını giriyoruz,dataGridView1.Columns.Add ile oluşturduğumuz combobox DataGridView’e eklenmiş oluyor ama son sütuna, eğer son sütun değilde arada bir yerde göstermek istiyorsanız dataGridView1.Columns[sayi].DisplayIndex satırında olduğu gibi görüntüleneceği sırayı seçebilirsiniz.
DataGridView’e Combobox ekledik peki bunu nasıl kullanacağız combobox’da değişiklik olduğunda bilgilere erişmek ve kullanmak istiyorsanız
ilk olarak DataGridView’in EditingControlShowing olayına
ComboBox cb = e.Control as ComboBox; if (cb != null) { cb.SelectedIndexChanged -= new EventHandler(cb_SelectedIndexChanged); cb.SelectedIndexChanged += new EventHandler(cb_SelectedIndexChanged); }
yazıyoruz burada nesne eğer combobox ise cb.SelectedIndexChanged isimli olayı tetikliyoruz ve bu olay içinde combobox içindeki bilgileri okuma işlemini yapıyoruz. seçili olan değer o satırdaki ilk hücrenin içine ekleniyor
public void cb_SelectedIndexChanged(object sender, EventArgs e) { var gecerli = dataGridView1.CurrentCellAddress; var gelen = sender as DataGridViewComboBoxEditingControl; DataGridViewTextBoxCell hucre = (DataGridViewTextBoxCell)dataGridView1.Rows[gecerli.Y].Cells[0]; hucre.Value = gelen.EditingControlFormattedValue.ToString(); }