Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Winform应用程序中获取datagridview特定单元格的值_C#_Winforms_Checkbox_Datagridview - Fatal编程技术网

C# 如何在Winform应用程序中获取datagridview特定单元格的值

C# 如何在Winform应用程序中获取datagridview特定单元格的值,c#,winforms,checkbox,datagridview,C#,Winforms,Checkbox,Datagridview,我有一个dataGridView,它在第一列中包含复选框。现在,根据我的要求,我必须为在另一个按钮单击事件中单击其复选框的行获取Employee No列的值。以及如何获取选中的多个复选框的值 这是我的密码 private void btn_load_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("Select", System.

我有一个dataGridView,它在第一列中包含复选框。现在,根据我的要求,我必须为在另一个按钮单击事件中单击其复选框的行获取
Employee No
列的值。以及如何获取选中的多个复选框的值

这是我的密码

    private void btn_load_Click(object sender, EventArgs e)
    { 
        DataTable dt = new DataTable();
        dt.Columns.Add("Select", System.Type.GetType("System.Boolean"));
        dt.Columns.Add("Employee No");
        dt.Columns.Add("Employee Name");
        dt.Columns.Add("Join Date");

        DataRow dr;

        for (int i = 0; i <= 10; i++)
        {
            dr = dt.NewRow();
            dr["Select"] = false;
            dr["Employee No"] = 1000 + i;
            dr["Employee Name"] = "Employee " + i;
            dr["Join Date"] = DateTime.Now.ToString("dd/MM/yyyy");

            dt.Rows.Add(dr);
        }

        dataGridView1.AllowUserToAddRows = true;
        dataGridView1.AllowUserToDeleteRows = true;
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

        dataGridView1.DataSource = dt; 
    } 

    private void btn_Click(object sender, EventArgs e)
    {
        //I need the Employee Id values here
    } 
private void btn\u load\u单击(对象发送方,事件参数e)
{ 
DataTable dt=新的DataTable();
Add(“Select”,System.Type.GetType(“System.Boolean”);
dt.栏添加(“员工编号”);
dt.列。添加(“员工姓名”);
dt.列。添加(“加入日期”);
数据行dr;

对于(int i=0;i,因为您已经将数据表绑定到grids数据源,所以可以将
dt
设置为类变量,并使用它来检查所选的变量

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private DataTable dt;

    private void btn_load_Click(object sender, EventArgs e)
    {
        dt = new DataTable();
        dt.Columns.Add("Select", System.Type.GetType("System.Boolean"));
        dt.Columns.Add("Employee No");
        dt.Columns.Add("Employee Name");
        dt.Columns.Add("Join Date");

        DataRow dr;

        for (int i = 0; i <= 10; i++)
        {
            dr = dt.NewRow();
            dr["Select"] = false;
            dr["Employee No"] = 1000 + i;
            dr["Employee Name"] = "Employee " + i;
            dr["Join Date"] = DateTime.Now.ToString("dd/MM/yyyy");

            dt.Rows.Add(dr);
        }

        dataGridView1.AllowUserToAddRows = true;
        dataGridView1.AllowUserToDeleteRows = true;
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

        dataGridView1.DataSource = dt;
    }

    private void btn_Click(object sender, EventArgs e)
    {
        //I need the Employee Id values here
        foreach (DataRow row in dt.Rows)
        {
            if ((bool)row["Select"] == true)
            {

            }
        }
    } 
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
专用数据表dt;
私有无效btn\u加载\u单击(对象发送方,事件参数e)
{
dt=新数据表();
Add(“Select”,System.Type.GetType(“System.Boolean”);
dt.栏添加(“员工编号”);
dt.列。添加(“员工姓名”);
dt.列。添加(“加入日期”);
数据行dr;

对于(int i=0;i,因为您已经将数据表绑定到grids数据源,所以可以将
dt
设置为类变量,并使用它来检查所选的变量

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private DataTable dt;

    private void btn_load_Click(object sender, EventArgs e)
    {
        dt = new DataTable();
        dt.Columns.Add("Select", System.Type.GetType("System.Boolean"));
        dt.Columns.Add("Employee No");
        dt.Columns.Add("Employee Name");
        dt.Columns.Add("Join Date");

        DataRow dr;

        for (int i = 0; i <= 10; i++)
        {
            dr = dt.NewRow();
            dr["Select"] = false;
            dr["Employee No"] = 1000 + i;
            dr["Employee Name"] = "Employee " + i;
            dr["Join Date"] = DateTime.Now.ToString("dd/MM/yyyy");

            dt.Rows.Add(dr);
        }

        dataGridView1.AllowUserToAddRows = true;
        dataGridView1.AllowUserToDeleteRows = true;
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

        dataGridView1.DataSource = dt;
    }

    private void btn_Click(object sender, EventArgs e)
    {
        //I need the Employee Id values here
        foreach (DataRow row in dt.Rows)
        {
            if ((bool)row["Select"] == true)
            {

            }
        }
    } 
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
专用数据表dt;
私有无效btn\u加载\u单击(对象发送方,事件参数e)
{
dt=新数据表();
Add(“Select”,System.Type.GetType(“System.Boolean”);
dt.栏添加(“员工编号”);
dt.列。添加(“员工姓名”);
dt.列。添加(“加入日期”);
数据行dr;

对于(inti=0;i假设表单类中有一个全局变量声明为

List<int> empIDs = new List<int> empIDs();

单击事件结束时,全局变量将填充单击其选择单元格的员工的ID

假设表单类中有一个全局变量声明为

List<int> empIDs = new List<int> empIDs();

单击事件结束时,全局变量将填充已单击其选择单元格的员工ID。您还可以使用DataSource属性:

    private void btn_Click(object sender, EventArgs e)
    { 
       int[] employeeIds = (dataGridView1.DataSource as DataTable).Rows
           .Cast<DataRow>()
           .Where(r => (bool)r["Select"])
           .Select(r => Convert.ToInt32(r["Employee No"]))
           .ToArray();
    }
private void btn\u单击(对象发送者,事件参数e)
{ 
int[]employeeIds=(dataGridView1.DataSource作为DataTable)。行
.Cast()
。其中(r=>(bool)r[“选择”])
.Select(r=>Convert.ToInt32(r[“员工编号]))
.ToArray();
}

并使用System.Linq命名空间。

您还可以使用DataSource属性:

    private void btn_Click(object sender, EventArgs e)
    { 
       int[] employeeIds = (dataGridView1.DataSource as DataTable).Rows
           .Cast<DataRow>()
           .Where(r => (bool)r["Select"])
           .Select(r => Convert.ToInt32(r["Employee No"]))
           .ToArray();
    }
private void btn\u单击(对象发送者,事件参数e)
{ 
int[]employeeIds=(dataGridView1.DataSource作为DataTable)。行
.Cast()
。其中(r=>(bool)r[“选择”])
.Select(r=>Convert.ToInt32(r[“员工编号]))
.ToArray();
}

并使用System.Linq命名空间。

使用DataGridView\u CellContentClick事件捕获员工Id值Private Sub DataGridView\u CellContentClick(ByVal发件人作为System.Object,ByVal e作为System.Windows.Forms.DataGridViewCellEventArgs)处理DataGridView.CellContentClick如果DataGridView.Rows(DataGridView.CurrentCell.RowIndex)。单元格(0).Value=True然后“如果结束使用DataGridView\u CellContentClick事件捕获员工Id值Private Sub DataGridView\u CellContentClick(ByVal发件人作为System.Object,ByVal e作为System.Windows.Forms.DataGridViewCellEventArgs)处理DataGridView.CellContentClick如果DataGridView.Rows(DataGridView.CurrentCell.RowIndex).Cells(0).Value=True然后“如果结束,则执行某项操作”