2011-03-05 27 views
7

'daki satır sayısını Max olarak ayarlayabilir miyim, bunun daha önce sorulmadığını düşünmek zor, ancak göründüğü gibi görünmüyor ve Google aramalarım tamamen boşa harcanıyor.İlişkili olmayan DataGridView

DataGridView kullanıcının ekleyebilmesine izin verecek maksimum sayıda satır ayarlayabilir miyim? (10. satırı ekledikten sonra, artık 'yeni satır' satırını göstermeyecek?).

cevap

9

Bunu yapmak için doğrudan bir özellik yok, ancak AllowUserToAddRows özelliğinin ve UserAddedRow olayının bir bileşimini kullanarak bunu kolayca kolayca gerçekleştirebilmeniz gerekir.

genel bir fikir İzin Maksimum karşı satır sayısını kontrol etmek için bir olay işleyicisi eklemek ve daha sonra da bir kullanıcı için bir satır siler zaman işlemek isteyeceksiniz AllowUserToAddRows = false

public partial class frmGridWithRowLimit : Form 
{ 
    public Int32 MaxRows { get; set; } 

    public frmGridWithRowLimit() 
    { 
     MaxRows = 10; 

     InitializeComponent(); 

     dgRowLimit.UserAddedRow += dgRowLimit_RowCountChanged; 
     dgRowLimit.UserDeletedRow += dgRowLimit_RowCountChanged; 
    } 

    private void dgRowLimit_RowCountChanged(object sender, EventArgs e) 
    { 
     CheckRowCount(); 
    } 

    private void CheckRowCount() 
    { 
     if (dgRowLimit.Rows != null && dgRowLimit.Rows.Count > MaxRows) 
     { 
      dgRowLimit.AllowUserToAddRows = false; 
     } 
     else if (!dgRowLimit.AllowUserToAddRows) 
     { 
      dgRowLimit.AllowUserToAddRows = true; 
     } 
    } 
} 

set tekrar satır eklemelerine izin verdiğinizden emin olun.

Umut bu, Sağol ... Elverişli MaxRows Josh

+0

benim durumumda bir sabittir

Şerefe yardımcı olur, hatta bu değeri değiştirme konusunda endişelenmenize gerek yok. Bunu bir girdap vereceğim, sonra geri geleceğim ve 25 puanınızı ödüllendireceğim! :) – Crisfole

+0

Güzel. Neredeyse aynı olan bir şeyi deniyordum ama birkaç önemli parçayı kaçırmıştım! Yine de "maksimum satırların" inşa edilmesine hala şaşırdım! :) – Crisfole

+0

@Cpfohl, Muhtemelen bu yalnızca bu senaryoda çalıştığı ve çoğu kişinin DataBinding ile ızgara kullandığı için. Bunu bir veri bağlı ızgara ile yapmaya çalışıyorsanız, bir dizi sorun vardır. ** Bu, programatik olarak eklenen satırların hesaba katılmadığını belirtmeye değer. Ancak, eğer senaryonuzda bu gerçekleşmezse, yukarıdaki çözüm yeterli olmalıdır. – Josh