2011-03-05 27 views
7

我發現很難相信這個問題以前沒有問過,但它看起來並不像以前那樣,我的Google搜索都沒有用。我可以設置未綁定的最大行數DataGridView

我可以設置DataGridView允許用戶添加的最大行數嗎? (就像添加第10行後,它將不再顯示'新行'行?)。

回答

9

有沒有直接的財產做到這一點,但你應該能夠使用AllowUserToAddRows財產和UserAddedRow事件的組合很容易地完成這件事。

的總體思路是添加一個事件處理程序來檢查的行數對最大允許,然後設置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; 
     } 
    } 
} 

你也會想,當用戶刪除行處理確保你允許他們再次添加行。

希望這有助於

乾杯, 喬希

+0

嘿嘿,謝謝...便利MAXROWS是在我的情況恆定的,甚至不用擔心改變該值。我會給這個旋轉,然後馬上回來,並獎勵你25分! :) – Crisfole 2011-03-07 14:02:26

+0

美麗。我嘗試了幾乎與此相同的東西,但是我錯過了幾個重要的部分!我仍然感到驚訝的是,「最大行」不是內置的! :) – Crisfole 2011-03-07 14:12:18

+0

@Cpfohl,可能是因爲它確實只適用於這種特殊的場景,而且大多數人使用帶有DataBinding的網格。如果您嘗試使用數據綁定網格執行此操作,則會涉及許多問題。 **值得一提的是,這並沒有考慮到以編程方式添加的行。但是,如果在您的情況下不會發生這種情況,上面的解決方案應該足夠了。 – Josh 2011-03-07 17:37:44

相關問題