首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >DataGridView复选框列-值和功能

DataGridView复选框列-值和功能
EN

Stack Overflow用户
提问于 2009-08-06 09:17:59
回答 10查看 265.7K关注 0票数 20

我已经在C#表单的DataGridView中添加了一个复选框列。功能需要是动态的-您选择一个客户,这将显示他们所有可以提供服务的项目,然后您可以选择这次希望为其中哪些项目提供服务。

无论如何,代码现在将在DGV的开头添加一个chckbox。我需要知道的是:

1)如何使整个列在默认情况下被“选中”?2)当我单击DGV下面的按钮时,如何确保只从“选中”行获得值?

下面是插入列的代码:

DataGridViewCheckBoxColumn doWork = new DataGridViewCheckBoxColumn();
            doWork.HeaderText = "Include Dog";
            doWork.FalseValue = "0";
            doWork.TrueValue = "1";
            dataGridView1.Columns.Insert(0, doWork);

那么下一步呢?任何帮助都将不胜感激!

EN

回答 10

Stack Overflow用户

发布于 2010-08-30 01:39:13

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    DataGridViewCheckBoxCell ch1 = new DataGridViewCheckBoxCell();
    ch1 = (DataGridViewCheckBoxCell)dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0];

    if (ch1.Value == null)
        ch1.Value=false;
    switch (ch1.Value.ToString())
    {
        case "True":
            ch1.Value = false;
            break;
        case "False":
            ch1.Value = true;
            break;
    }
    MessageBox.Show(ch1.Value.ToString());
}

确定是否选中datagridview中的复选框的最佳解决方案。

票数 15
EN

Stack Overflow用户

发布于 2011-05-23 07:35:39

我花了很长时间才弄清楚如何在不遍历所有记录的情况下做到这一点。我有一个绑定的datagridview-source,除了checkbox-column之外的所有字段都被绑定。所以我没有/需要一个循环来添加每一行,我也不想仅仅为了这个目的而创建一个循环。因此,经过多次尝试,我终于得到了它。而且它实际上也很简单:

首先,使用自定义复选框单元格将新的.cs文件添加到项目中,例如

DataGridViewCheckboxCellFilter.cs:

using System.Windows.Forms;

namespace MyNamespace {
    public class DataGridViewCheckboxCellFilter : DataGridViewCheckBoxCell {
        public DataGridViewCheckboxCellFilter() : base() {
            this.FalseValue = 0;
            this.TrueValue = 1;
            this.Value = TrueValue;
        }
    }
}

之后,在您的GridView上添加checkbox-column后,您将执行以下操作:

// add checkboxes
DataGridViewCheckBoxColumn col_chkbox = new DataGridViewCheckBoxColumn();
{
    col_chkbox.HeaderText = "X";
    col_chkbox.Name = "checked";
    col_chkbox.CellTemplate = new DataGridViewCheckboxCellFilter();                
}
this.Columns.Add(col_chkbox);

就是这样!每次在新行中添加复选框时,它们都会被设置为true。享受吧!

票数 4
EN

Stack Overflow用户

发布于 2012-01-24 14:37:32

以下是这个问题的一个线性答案

List<DataGridViewRow> list = DataGridView1.Rows.Cast<DataGridViewRow>().Where(k => Convert.ToBoolean(k.Cells[CheckBoxColumn1.Name].Value) == true).ToList();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1237829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档