2017-09-11 8 views
0

사용자가 단추를 클릭하면 DataGridView에 행을 추가하는 프로그램이 있습니다. 내가 여기DataGridView에서 최대 행 수 설정?

(10)의 최대 행 수를 제한해야 할 것은 내 코드입니다 : 내가 여기 (링크를 찾을 수 없습니다) 게시 된 또 다른 질문의 코드를 가지고

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

    public Form1() 
    { 
     MaxRows = 10; 
     InitializeComponent(); 

     dataGridView1.UserAddedRow += dataGridView1_RowCountChanged; 
     dataGridView1.UserDeletedRow += dataGridView1_RowCountChanged; 
    } 

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

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

    public void button1_Click(object sender, EventArgs e) 
    { 
     this.dataGridView1.Rows.Add("This is a row."); 
    } 

} 

하지만, 코드가 작동하지 않고 DataGridView에서 11 행 이상을 만들 수 있습니다. 왜 이런 일이 벌어지는 지 이유는 무엇입니까?

답변

0

아마도이 방법이 더 쉽습니까? 어디를 뒤에서 코드의 행의 추가와 아무 상관이 없다 ". 그렇지 않은 경우는 false 기본값은 true입니다 추가 행 옵션이 사용자에게 표시되고있는 경우는 true"

private Int32 MaxRows { get; set; } 

public Form1() 
{ 
    MaxRows = 10; 
    InitializeComponent(); 
} 

public void button1_Click(object sender, EventArgs e) 
{ 
    if (dataGridView1.Rows.Count <= MaxRows) 
    this.dataGridView1.Rows.Add("This is a row."); 
} 

또한, AllowUserToAddRows 호텔입니다 행을 추가하고 있습니다. 앱이 실행되는 동안 데이터 그리드를 클릭하여 그리드에 새로운 행을 추가 할 수있는 옵션을 의미합니다.

+0

을 그리고 당신은 당신이 더 많은 행을 추가 할 수있는 몇 가지 시각적 피드백이 필요한 경우 데이터 그리드가 10 개 행을 가지고있는 동안, 당신은 단지 당신의 버튼을 해제해야합니다 다음과 같이 버튼을 클릭 핸들러를 수정합니다. – berthos

0

CheckRowCount()를 단순화 할 수 있습니다. 최대 한도에 도달 한 경우에만 AllowUserToAddRows을 비활성화하면됩니다. 당신은 버튼 클릭에 새 행을 추가 할 때

private void CheckRowCount() 
    { 
     // The data grid view's default behavior is such that it creates an additional row up front. 
     // e.g. when you add 1st row, it creates 2nd row automatically. 
     // If you use Count < MaxRows, the user won't be able to add the 10th row. 
     if (dataGridView1.Rows.Count <= MaxRows) 
     { 
      dataGridView1.AllowUserToAddRows = true; 
     } 
     else 
     { 
      dataGridView1.AllowUserToAddRows = false; 
     } 
    } 

, 현재 행 수는 MaxRows보다 작은 있는지 확인합니다. 또한 CheckRowCount 메서드를 호출하여 AllowUserToAddRows이 적절하게 설정되어 있는지 확인해야합니다.

private void button1_Click(object sender, EventArgs e) 
    { 
     // If the rows count is less than max rows, add a new one. 
     if (dataGridView1.Rows.Count < MaxRows) 
     { 
      this.dataGridView1.Rows.Add("This is a row."); 

      // Check the row count again. 
      CheckRowCount(); 
     } 
    } 
관련 문제