C# 选中复选框时如何选择数据表行?

C# 选中复选框时如何选择数据表行?,c#,wpf,datatable,C#,Wpf,Datatable,我有一个数据表,每行中都有一个复选框。我需要选中复选框的行的每列值。请告诉我如何实现这一点。 这是我的密码。选中复选框时,我需要特定的行详细信息 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using Sy

我有一个数据表,每行中都有一个复选框。我需要选中复选框的行的每列值。请告诉我如何实现这一点。 这是我的密码。选中复选框时,我需要特定的行详细信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;

namespace dataTable_test
{
    /// <summary>
    /// Interaction logic for Page1.xaml
    /// </summary>
    public partial class Page1 : Page
    {
        DataTable table = new DataTable();
        public Page1()
        {
            InitializeComponent();

             table = GetTable();
            enter_data(table);


        }
        static DataTable GetTable()
        {
            //
            // Here we create a DataTable with four columns.
            //
            DataTable table = new DataTable();
            table.Columns.Add("Dosage", typeof(int));
            table.Columns.Add("Drug", typeof(string));
            table.Columns.Add("Patient", typeof(string));
            table.Columns.Add("Date", typeof(DateTime));
            table.Columns.Add("isSelected", typeof(bool));

            //
            // Here we add five DataRows.
            //
            table.Rows.Add(25, "Indocin", "David", DateTime.Now,false);
            table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now, false);
            table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now,false);
            table.Rows.Add(21, "Combivent", "Janet", DateTime.Now, false);
            table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now, false);
            return table;
        }
        private void enter_data(DataTable dataTable)
        {
            grid1.Children.Clear();
            grid1.RowDefinitions.Clear();
            grid1.ColumnDefinitions.Clear();

            int row = 0,col=0;
            foreach (DataRow dr1 in dataTable.Rows)
            {
                RowDefinition row1 = new RowDefinition();
                row1.Height = new GridLength(50);
                //ColumnDefinition column1 = new ColumnDefinition();
                //column1.Width = new GridLength(120);

                if (row == 0)
                {
                    col++;
                    row = 0;
                    ColumnDefinition column1 = new ColumnDefinition();
                    column1.Width = new GridLength(120);

                    ColumnDefinition column2 = new ColumnDefinition();
                    column2.Width = new GridLength(120);

                    ColumnDefinition column3 = new ColumnDefinition();
                    column3.Width = new GridLength(120);

                    ColumnDefinition column4 = new ColumnDefinition();
                    column4.Width = new GridLength(120);

                    ColumnDefinition column5 = new ColumnDefinition();
                    column5.Width = new GridLength(120);

                    grid1.ColumnDefinitions.Add(column1);
                    grid1.ColumnDefinitions.Add(column2);
                    grid1.ColumnDefinitions.Add(column3);
                    grid1.ColumnDefinitions.Add(column4);
                    grid1.ColumnDefinitions.Add(column5);
                  }

                grid1.RowDefinitions.Add(row1);

                //grid1.ColumnDefinitions.Add(column2);

                Button B1 = new Button();
                B1.Content = dr1["Dosage"].ToString();
                B1.Margin = new Thickness(5);
                B1.Height = 40;
                B1.Foreground = Brushes.Black;
                B1.BorderBrush = Brushes.Black;
                B1.Background = Brushes.LightGray;
                Grid.SetRow(B1, row);
                Grid.SetColumn(B1, 0);

                Button B2 = new Button();
                B2.Content = dr1["Drug"].ToString();
                B2.Margin = new Thickness(5);
                B2.Height = 40;
                B2.Foreground = Brushes.Black;
                B2.BorderBrush = Brushes.Black;
                B2.Background = Brushes.LightGray;
                Grid.SetRow(B2, row);
                Grid.SetColumn(B2, 1);

                Button B3 = new Button();
                B3.Content = dr1["Patient"].ToString();
                B3.Margin = new Thickness(5);
                B3.Height = 40;
                B3.Foreground = Brushes.Black;
                B3.BorderBrush = Brushes.Black;
                B3.Background = Brushes.LightGray;
                Grid.SetRow(B3, row);
                Grid.SetColumn(B3, 2);

                Button B4 = new Button();
                 B4.Content = dr1["Date"].ToString();
                B4.Margin = new Thickness(5);
                B4.Height = 40;
                B4.Foreground = Brushes.Black;
                B4.BorderBrush = Brushes.Black;
                B4.Background = Brushes.LightGray;
                Grid.SetRow(B4, row);
                Grid.SetColumn(B4, 3);

                CheckBox B5 = new CheckBox();
                if (Convert.ToBoolean(dr1["isSelected"].ToString()) == true)
                    B5.IsChecked = true;
                else B5.IsChecked = false;
                //B5.Checked += B5_Checked;
                B5.Margin = new Thickness(5);
                B5.Height = 40;
                B5.Foreground = Brushes.Black;
                B5.BorderBrush = Brushes.Black;
                B5.Background = Brushes.LightGray;
                Grid.SetRow(B5, row);
                Grid.SetColumn(B5, 3);

                grid1.Children.Add(B1);
                grid1.Children.Add(B2);
                grid1.Children.Add(B3);
                grid1.Children.Add(B4);
                grid1.Children.Add(B5);
                 row++;            
            }

        }


    }
    }
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Data;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Imaging;
使用System.Windows.Navigation;
使用System.Windows.Shapes;
使用系统数据;
名称空间数据表测试
{
/// 
///Page1.xaml的交互逻辑
/// 
公共部分类第1页:第页
{
DataTable=新的DataTable();
公共页1()
{
初始化组件();
table=GetTable();
输入_数据(表格);
}
静态数据表GetTable()
{
//
//这里我们创建一个包含四列的数据表。
//
DataTable=新的DataTable();
表.列.添加(“剂量”,类型(int));
表.列.添加(“药物”,类型(字符串));
表.列.添加(“患者”,类型(字符串));
表.列.添加(“日期”,类型(日期时间));
表.列.添加(“isSelected”,typeof(bool));
//
//这里我们添加五个数据行。
//
表.Rows.Add(25,“Indocin”,“David”,DateTime.Now,false);
table.Rows.Add(50,“Enebrel”,“Sam”,DateTime.Now,false);
表.行.添加(10,“Hydrazine”,“Christoff”,DateTime.Now,false);
table.Rows.Add(21,“Combivent”,“Janet”,DateTime.Now,false);
table.Rows.Add(100,“Dilantin”,“Melanie”,DateTime.Now,false);
返回表;
}
私有void输入_数据(数据表数据表)
{
grid1.Children.Clear();
grid1.RowDefinitions.Clear();
grid1.ColumnDefinitions.Clear();
int行=0,列=0;
foreach(dataTable.Rows中的DataRow dr1)
{
RowDefinition row1=新的RowDefinition();
行1.高度=新网格长度(50);
//ColumnDefinition column1=新ColumnDefinition();
//列1.宽度=新网格长度(120);
如果(行==0)
{
col++;
行=0;
ColumnDefinition column1=新ColumnDefinition();
列1.宽度=新网格长度(120);
ColumnDefinition column2=新ColumnDefinition();
列2.宽度=新网格长度(120);
ColumnDefinition column3=新ColumnDefinition();
列3.宽度=新网格长度(120);
ColumnDefinition column4=新ColumnDefinition();
列4.宽度=新网格长度(120);
ColumnDefinition column5=新ColumnDefinition();
列5.宽度=新网格长度(120);
grid1.ColumnDefinitions.Add(column1);
grid1.ColumnDefinitions.Add(column2);
grid1.ColumnDefinitions.Add(column3);
grid1.ColumnDefinitions.Add(column4);
grid1.ColumnDefinitions.Add(column5);
}
grid1.RowDefinitions.Add(第1行);
//grid1.ColumnDefinitions.Add(column2);
按钮B1=新按钮();
B1.含量=dr1[“剂量”]。ToString();
B1.余量=新厚度(5);
B1.高度=40;
B1.前景=画笔。黑色;
B1.边界笔刷=笔刷。黑色;
B1.背景=画笔。浅灰色;
Grid.SetRow(B1,row);
Grid.SetColumn(B1,0);
按钮B2=新按钮();
B2.内容=dr1[“药物]。ToString();
B2.余量=新厚度(5);
B2.高度=40;
B2.前景=画笔。黑色;
B2.BorderBrush=画笔。黑色;
B2.背景=画笔。浅灰色;
Grid.SetRow(B2,row);
网格设置列(B2,1);
按钮B3=新按钮();
B3.Content=dr1[“患者”].ToString();
B3.余量=新厚度(5);
B3.高度=40;
B3.前景=画笔。黑色;
B3.BorderBrush=画笔。黑色;
B3.背景=画笔。浅灰色;
Grid.SetRow(B3,row);
网格设置列(B3,2);
按钮B4=新按钮();
B4.Content=dr1[“日期”].ToString();
B4.边缘=新厚度(5);
B4.高度=40;
B4.前景=画笔。黑色;
B4.BorderBrush=画笔。黑色;
B4.背景=画笔。浅灰色;
网格设置行(B4,行);
网格设置列(B4,3);
复选框B5=新复选框();
if(Convert.ToBoolean(dr1[“isSelected”].ToString())==true)
B5.IsChecked=true;
else B5.IsChecked=false;
//B5.已检查+=B5_已检查;
B5.边缘=新厚度(5);
B5.高度=40;
B5.前景=画笔。黑色;
B5.BorderBrush=画笔。黑色;
B5.背景=画笔。浅灰色;
Grid.SetRow(B5,世界其他地区);
网格设置列(B5,3);
grid1.Children.Add(B1);
grid1.Children.Add(B2);
grid1.Children.Add(B3);
grid1.儿童。添加(B4);
grid1.Children.Add(B5);
You Can use below event of the datagridView

  private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {
            if (dataGridView1.IsCurrentCellDirty)
            {
                dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
        }
 private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Columns[e.ColumnIndex].Name == "Column1")
            {

                DataGridViewCheckBoxCell checkCell =
                   (DataGridViewCheckBoxCell)dataGridView1.
                    Rows[e.RowIndex].Cells["Column1"];
                if ((bool)checkCell.Value == true) {
                    int i = dataGridView1.CurrentRow.Index;
                    string col = dataGridView1.Rows[e.RowIndex].Cells["column2"].Value.ToString();
                }

            }
        }