2012-03-19 8 views
0

私はWindowsアプリケーションでdatagridviewを持っています。デフォルトでは、datagridviewは1行でロードされます。セルに何かを入力すると、この行の下に別の行が作成されます。それはこのように続く。誰かが何かを入力して削除すると、下に作成された行は削除されません。私は無制限のnoを作成することからユーザーを停止したい。データのない行の数。このような空白行を最大2つ作成するようにdatagridviewを制限することはできますか?それがどのようにできるかをお勧めします。2行を作成するようにdatagridviewを制限する方法はありますか?

+0

http://stackoverflow.com/questions/4849987/how-do-i-remove-the-empty-row-from-the-bottom-of-a-datagridviewの可能性のある重複:ボタンを押して、 -control/4850020#4850020http://stackoverflow.com/questions/5593059/datagridview-automaticly-adds-new-row-why/5604432#5604432 – Dotnet

答えて

0

を通じてそれを自動的に実現することができません。手動で行う必要があります。その最適な方法は、cellvalidatingとcellvalidatedイベントの適切な処理です。セルが空の場合はイベントをキャンセルします。また、プロパティAllowUserToAddRows = falseをに設定し、手動で新しい行を追加することもできます。

   // source is IBindingSource 

       MyObject newObject = this.source.AddNew(); 
       DataGridViewRow row = this.dgv.Rows[this.source.IndexOf(newObject)]; 
       row.Selected = true; 

       int maxSelectedOrder = this.source.IndexOf(newObject); 
       int minSelectedOrder = this.source.IndexOf(newObject); 

       int displayedRows = this.dgv.Rows.GetRowCount(DataGridViewElementStates.Displayed); 
       int firstDisplayed = this.dgv.FirstDisplayedScrollingRowIndex; 
       int lastDisplayed = displayedRows + firstDisplayed - 1; 

       if (maxSelectedOrder - 1 > lastDisplayed && minSelectedOrder - 1 > firstDisplayed) 
       { 
        int firstToDisplay = displayedRows + firstDisplayed - 1 - (displayedRows - 1); 

        if (firstToDisplay > 0) 
        { 
         this.dgv.FirstDisplayedScrollingRowIndex = firstToDisplay; 
        } 
       } 

       this.dgv.CurrentCell = row.Cells[0]; 
       this.dgv.Focus(); 
0

は、プロパティAllowUserTAddRows=false;を設定したり、コード

myDataGridView.AllowUserToAddRows = false; 
関連する問題