2013-08-26 92 views
1

我有一個gridview有2列,一個是文本框列和其他複選框列,如何知道哪個複選框被選中。如何知道datagridview中的特定複選框是否被選中?

enter image description here

如在圖像中所示,假設任何複選框的被選中,我想顯示對應的文本框的值到該複選框。

誰能幫助我?我想下面的代碼,但我面臨的問題是,一旦我點擊下一個複選框,然後是越來越顯示先前選中的複選框值是越來越顯示的值..

dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged); 

    void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     object tempObj = dataGridView1.Rows[e.RowIndex].Cells[1].Value; 
     dataGridView1_CurrentCellDirtyStateChanged(sender, e); 

     if (((e.ColumnIndex) == 1) && ((bool)dataGridView1.Rows[e.RowIndex].Cells[1].Value)) 
     { 
      MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()); 

     } 
    } 
+1

那你想怎麼辦?如果您嘗試從Internet進行搜索,恐怕在這裏編寫問題的時間將會相同:[datagridview.CellValueChanged event](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview .cellvaluechanged.aspx)或[datagridview.CellEndEdit event](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged.aspx) – Fabio

+0

只需查看給定的值請記住,對於複選框,只有兩個可能的值:true或false。 – varocarbas

+0

@varocarbas我同意你的評論,但作爲intially複選框沒有選中,所以檢查真假它每次返回false – Deadlock

回答

3
private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e) 
    { 
     if (dataGridView1.IsCurrentCellDirty) 
     { 
      dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit); 
     } 
    } 

    private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     if (((e.ColumnIndex) == 1) && ((bool)dataGridView1.Rows[e.RowIndex].Cells[1].Value)) 
     { 
      MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()); 

     } 
    } 

一樣簡單,這些下面的鏈接,幫助我理解過程rstand的cellvalue_changed和cell_content_click概念.. http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged.aspx

,並通過這些鏈接的幫助下,我終於得到了解決我的問題

+0

行間閱讀... :) – Fabio

1

這是因爲這

//replace the row number and column name with your own 
if ((bool)dataGridView1.Rows[0].Cells["Column1"].Value) 
{ 
     //do your work 
} 
+0

它給予nullReference異常說「對象沒有設置爲對象的引用」 – Deadlock

+0

你改變了datagridview的名字嗎?行號?和列名?如果是,那麼您指定的行實際上是否包含記錄?你有初始化你的數據網格嗎?有太多的事情可能會出錯。顯示你的代碼。 – Ehsan

+0

downvote的任何理由? – Ehsan

0
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.RowIndex > -1 && e.ColumnIndex > -1) 
    label1.Text = dataGridView1.Rows[e.RowIndex].Cells["Col1"].Value.ToString(); 
} 
+0

我想窗口表單解決方案不是asp.net解決方案...爲什麼我需要按鈕..我只想當我點擊複選框相應的文本應該顯示。 – Deadlock

相關問題