这个问题,如果不通过键盘触发事件,直接去点击按钮,可以获取被选择的checkbox项,但通过键盘触发事件后,就获取不到被选择的checkbox项,大家有什么办法

解决方案 »

  1.   

    在checkBox1_CheckStateChanged这个事件里获取他的state!
      

  2.   


    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                bool bo = true;
                for (int i = 0; i < 10; i++)
                {
                    DataGridViewRow row = dataGridView1.Rows[dataGridView1.Rows.Add()];
                    row.Cells[0].Value = i;
                    row.Cells[1].Value = bo;
                    bo = !bo;
                }
            }        private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                int count = 0;
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (!row.IsNewRow)
                        if (Convert.ToBoolean(row.Cells[1].Value))
                            count++;
                }
                MessageBox.Show(count.ToString());
            }private void InitializeComponent()
            {
                this.dataGridView1 = new System.Windows.Forms.DataGridView();
                this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
                this.Column2 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
                ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
                this.SuspendLayout();
                // 
                // dataGridView1
                // 
                this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
                this.Column1,
                this.Column2});
                this.dataGridView1.Location = new System.Drawing.Point(62, 36);
                this.dataGridView1.Name = "dataGridView1";
                this.dataGridView1.RowTemplate.Height = 23;
                this.dataGridView1.Size = new System.Drawing.Size(269, 150);
                this.dataGridView1.TabIndex = 0;
                // 
                // Column1
                // 
                this.Column1.HeaderText = "Column1";
                this.Column1.Name = "Column1";
                // 
                // Column2
                // 
                this.Column2.HeaderText = "Column2";
                this.Column2.Name = "Column2";
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(657, 376);
                this.Controls.Add(this.dataGridView1);
                this.KeyPreview = true;
                this.Name = "Form1";
                this.Text = "Form1";
                this.Load += new System.EventHandler(this.Form1_Load);
                this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
                ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
                this.ResumeLayout(false);        }
        }