2011-07-01 7 views
0

DataGridViewに表示されている現在の行数をユーザーに出力するために、RowCountプロパティをラベルにバインドしようとしています。Windowsフォーム:DataGridView RowCountプロパティをラベルにバインドする

私は次のことを試してみました: lblArticleCount.DataBindings.Add( "テキスト"、データグリッド、 "行カウント")。

は、まず、それは私がしたい正確な方法が、DataGridViewのは、更新され、多かれ少なかれ行がそれである取得したときに、ラベルは依然として同じままで作業するつもりであることのように思えます。新しい行数は表示されません。

私が間違っているように見えます。どのようにそれを解決しますか?私の目的は、新しいカウントをラベルに手動で設定するイベントに反応することを避けることでした。別の方法はありませんか?

ありがとうございました。

+0

:このコードをチェックしてください 。 –

答えて

-1

これは、あなたが意図し何だろうではありませんが、それは動作するはずです:

 Label showRowCount = new Label(); 
     DataGridView dgv = new DataGridView(); 
     dgv.RowsAdded += new DataGridViewRowsAddedEventHandler(dgv_RowsCountChanged); 
     dgv.RowsRemoved += new DataGridViewRowsAddedEventHandler(dgv_RowsCountChanged); 
    } 

    void dgv_RowsCountChanged(object sender, DataGridViewRowsAddedEventArgs e) 
    { 
     showRowCount.Text = dgv.RowCount; 
    } 
-1

理由は、実装する必要があります通り道。データバインディングは、典型的には、UI要素の変更場合、ビジネス・オブジェクトが通知され、逆に、ビジネス・オブジェクトが変更された場合、その後、UI要素の変化ここで結合双方向です。一方的なデータバインディングしか実装していないようです。

+0

私が書いたのは、私の最初の投稿で示した行です。私は、双方向のデータバインディングを得るために変更するには何が必要でしょうか? – Patrick

0

あなたは、単にRowsAddedとRowsRemoved evnetsを使用して、DataGridViewの内の行数をカウントしていけないのはなぜ?私はむしろ、グリッドのデータソースの行数にラベルを結合する

public partial class Form1 : Form 
{ 
    int rowsCount; 
    public Form1() 
    { 
     InitializeComponent(); 
     dataGridView1.Columns.Add("col1", "Column 1"); 
     dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded); 
     dataGridView1.RowsRemoved += new DataGridViewRowsRemovedEventHandler(dataGridView1_RowsRemoved); 
    } 

    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
    { 
     rowsCount++; 
     CountRows(); 
    } 

    private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e) 
    { 
     rowsCount--; 
     CountRows(); 
    } 

    private void CountRows() 
    { 
     label1.Text = String.Format("Number of all rows {0}", rowsCount); 
    } 
} 
関連する問題