2017-12-15 2 views
0

Ich habe eine Tabelle mit zwei CheckBoxen und ich möchte eine davon deaktivieren, während die andere (wie RadioButton) überprüft wird.Wie setze ich das DataGridView-Kontrollkästchen auf "true/false"?

enter image description here

void DataGridView1CellValueChanged(object sender, DataGridViewCellEventArgs e) 
    { 
     DataGridViewCheckBoxCell never = dataGridView1.Rows[e.RowIndex].Cells[1] as DataGridViewCheckBoxCell; 
     DataGridViewCheckBoxCell once = dataGridView1.Rows[e.RowIndex].Cells[2] as DataGridViewCheckBoxCell; 

     bool isNeverChecked = (bool)never.EditedFormattedValue; 

     if(isNeverChecked){ 
      once.Value = "false"; 
      never.Value = "true"; 
     }else{ 
      once.Value = "true"; 
      never.Value = "false"; 
     } 
     dataGridView1.Refresh(); 
    } 
+1

https://stackoverflow.com/questions/13338837/check-uncheck-a-checkbox-on-datagridview –

+1

Der bessere Weg ist, Daten zu verwenden, die Bindung und die Werte in den darunter liegenden Objekten ändern. –

Antwort

0
if(checkbox1.isChecked) 
checkbox2.isChecked = false; 

das gleiche mit dem checkbox2 ...

Aber Sie sollten dies auf die Checkbox Ereignis verdrahten wird geprüft.

Auch wenn Sie wpf verwenden, können Sie Bindung verwenden ich

nehme
0

mit so etwas wie dieses dgv.Rows[0].Cells[0].Value = true;

using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     DataGridView dgv = new DataGridView(); 

     public Form1() 
     { 
      InitializeComponent(); 
      initours(); 

      checkone(); 
     } 

     private void checkone() 
     { 
      dgv.Rows[0].Cells[0].Value = true;//chekc the one in the first row 
     } 

     private void initours() 
     { 
      this.Controls.Add(dgv); 
      dgv.Dock = DockStyle.Fill; 

      dgv.AutoGenerateColumns = false; 
      DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn(); 
      dgv.Columns.Add(col); 
      dgv.Rows.Add(); 
      dgv.Rows.Add(); 
      dgv.Rows.Add(); 
      dgv.Rows.Add(); 
     } 
    } 
} 

oder mit einer Datenquelle wie von anderen vorgeschlagen.

using System.ComponentModel; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form2 : Form 
    { 
     DataGridView dgv = new DataGridView(); 
     BindingList<dgvitem> dgvdata = new BindingList<dgvitem>(); 
     public Form2() 
     { 
      InitializeComponent(); 
      initours(); 


      //add data 
      for (int i = 0; i < 10; i++) 
      { 
       dgvdata.Add(new dgvitem { checkcol = false, col2 = $"col2 row {i}" }); 
      } 


      //check one of them 
      dgvdata[2].checkcol = true; 

     } 

     private void initours() 
     { 
      this.Controls.Add(dgv); 
      dgv.Dock = DockStyle.Fill; 
      dgv.DataSource = dgvdata; 
     } 
    } 



    public class dgvitem 
    { 
     public bool checkcol { get; set; } 
     public string col2 { get; set; } 
    } 
} 
Verwandte Themen