VB.NET Me.DataGridView1.Rows.RemoveAt() Kodu nasıl kullanılıyor bende çalışmıyor

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Arkadaşlar projemde şöyle birşeye ihtiyacım var basitçe anlatayım bu koda nasıl neden ihtiyacım var anlarsanız daha iyi elimde 2 adet datagrid var DataGridView1 ve DataGridView2 DataGridView2'in içi bilgilerle dolu , DataGridView1'de form load'da eklediğim kod ile 10 adet boş satır oluşturuluyor. DataGridView1'de bir satıra tıklayıp seçiyorum ardından DataGridView2'deki bir satıra tıklıyorum ve DataGridView2'deki satırdaki bütün yazılar DataGridView1'deki seçili satıra kopyalanıyor işte hepsi bu DataGridView1'de boş satır adedi 5'in altına düşmesin istiyorum basit bir fonksiyon yaptım her işlem yapıldığında çalıştırılacak bos satır adedini bulup ya yeni boş satır ekleyecek yada en sonuncu boş satırı bulup onu silerek eksiltecek kodum aşağıda burda i 'yi bir integere atıyorum bu en son satır no'sudur ama silme kodu integeri kabul etmiyor integer harici değişik şeyler denedim olmadı ama i integer kodu döngü içine koyduğumda Me.DataGridView1.Rows.RemoveAt(i) bu şekilde çalışıyor ama benim bunu döngü dışında kullanmam gerekiyor en azından benim mantığıma göre,, Kod döngü dışında çalışmıyor bu durumda kodun çalışması için (Dim enSonBosSatir As Integer) özelliğini integer değilde ne yapmalıyımki satır silme kodu döngü dışında çalışsın?

Kod:
    Sub x_bossatırlarıayarlama()
        Dim bosSatirAdedi As Integer = 0
        Dim enSonBosSatir As Integer
        For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
            If String.IsNullOrEmpty(Trim(CStr(Me.DataGridView1.Rows(i).Cells(1).Value))) Then
                bosSatirAdedi = +1
                enSonBosSatir = i
            End If
        Next
            If bosSatirAdedi < 5 Then
                Me.DataGridView1.Rows.Add()
            Else
            'Me.DataGridView1.Rows.RemoveAt(enSonBosSatir) ' BU KOD ÇALIŞMIYOR
            End If
    End Sub
 

algea

Doçent
Katılım
15 Temmuz 2011
Mesajlar
505
Reaksiyon puanı
22
Puanları
18
visual basic ile mi yapacaksın
 

aslanpayi

Doçent
Katılım
12 Ağustos 2009
Mesajlar
523
Reaksiyon puanı
1
Puanları
0
.net olduğu için VisualBasic mi C# ile mi yazacak bi önemi yok. GridView'ın kendi metodudur bu.

Vereceğim örnekte ilk satırı silmeyi göstereceğim gerisini kendin de yaparsın. Removeat() metodundaki parantezi açarken çıkan açıklamatı da incelersen int içeren bir değişken vermeni istemektedir. Buraya silmek istediğin satırın "Indexini" yani "0 ile datagridview.RowCout" arasında bir değer girmen gerekir. Bu değerlerin dışında veya hiçbirşey girmezsen hata verir.

Ben örnekte butonun click olayına yazmayı tercih ettim.

Kod:
        private void button1_Click(object sender, EventArgs e)
        {
            dg1.Rows.RemoveAt(0);
        }

İlk görüntüde satırların tamamı mevcutken
dgsatirsil.png


Butona tıklayınca ilk satır silindi
dgsatirsil1.png





Sen seçtiğin satırı silmek istiyorsan ilk önce tüm satırları dönen bir for döngüsü ile seçili satırı tespit edebilirsin ve onu silebilirsin.

Örnek:
Multiselect özelliğini True, SelectionMode özelliğini ise FullRowSelect yaptım. İlk özellik Ctrl ve Shift tuşları ile çoklu satır seçimi sağlarken diğeri de tüm satırın seçili olmasını sağlıyor.


Bu sefer de kodun çevresine gridin satırlarını dönen bir for döngüsü ve satırın seçili olup olmadığını kontrol eden bir if şartı koydum. İçine de tabiki "i" satırı seçiliyse sil anlamına gelen "dg1.Rows.RemoveAt(i)"
Kod:
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < dg1.RowCount; i++)
            {                
                if (dg1.Rows[i].Selected)
                {
                    dg1.Rows.RemoveAt(i);
                }
            }
        }


İlk görüntüde satırların tamamı mevcutken
dgsatirsil2.png


Butona tıklayınca seçili satır(lar) silindi
dgsatirsil3.png




Umarım faydalı olmuştur.

Not: Ben anlamış olduğun gibi C# ile yazıyorum fakat sadece döngüler ve if'lerin yazım şekli biraz farklı olduğundan kolayca anlayacağını ve kendi koduna uyarlayacağını düşünüyorum.
 
Üst