C# 选择单击按钮的DataGridView行

C# 选择单击按钮的DataGridView行,c#,winforms,gridview,C#,Winforms,Gridview,基本上,我的问题是我的代码似乎跳过了我的foreach循环,我的目标是从同一行中单击按钮获得行值,到目前为止,这是我的代码: private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { var senderGrid = (DataGridView)sender; if (senderGrid.Columns[e.ColumnIndex] is DataGrid

基本上,我的问题是我的代码似乎跳过了我的foreach循环,我的目标是从同一行中单击按钮获得行值,到目前为止,这是我的代码:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    var senderGrid = (DataGridView)sender;

    if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
    e.RowIndex >= 0)
    {
         string userID;
         string Monday;
         string Tuesday;
         string Wednesday;
         string Thursday;
         string Friday;

         foreach (DataGridViewRow row in dataGridView1.SelectedRows)
         {
              userID = row.Cells[0].Value.ToString();
              Monday = row.Cells[1].Value.ToString();
              Tuesday = row.Cells[2].Value.ToString();
              Wednesday = row.Cells[3].Value.ToString();
              Thursday = row.Cells[4].Value.ToString();
              Friday = row.Cells[5].Value.ToString();

              dbHandler objDBHandler = new dbHandler();
              objDBHandler.writeDB("INSERT INTO [OfficeCalendar].[dbo].[DayData]([UserID],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday]) VALUES ('" + userID + "','" + Monday + "','" + Tuesday + "','" + Wednesday + "','" + Thursday + "','" + Friday + "');", "byron");
        }
    }
}

我改变了自己的问题

将DataGridView的SelectionMode设置为FullRowSelect


MethodMan的道具感谢您的评论,它帮助了很多

除非您允许用户一次选择多行,否则无需循环浏览它们。CellContentClick事件的DataGridViewCellEventArgs参数对象已经为您提供了单击的行号

string userID;
string Monday;
string Tuesday;
string Wednesday;
string Thursday;
string Friday;

DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
userID = row.Cells[0].Value.ToString();
Monday = row.Cells[1].Value.ToString();
Tuesday = row.Cells[2].Value.ToString();
Wednesday = row.Cells[3].Value.ToString();
Thursday = row.Cells[4].Value.ToString();
Friday = row.Cells[5].Value.ToString();

dbHandler objDBHandler = new dbHandler();
objDBHandler.writeDB("INSERT INTO [OfficeCalendar].[dbo].[DayData]([UserID],[Monday],[Tuesday],[Wednesday],[Thursday],[Friday]) VALUES ('" + userID + "','" + Monday + "','" + Tuesday + "','" + Wednesday + "','" + Thursday + "','" + Friday + "');", "byron");
此外,在主题之外,您的代码会提示SQL注入;使用参数化查询而不是字符串连接。

将DataGridView的SelectionMode更改为FullRowSelectDon call a DataGridView a GridView!!这是错误的,令人困惑的,肯定会得到错误的答案,浪费大家的时间。。总是用正确的名字来称呼事物!是的,要多打四个字母,但在这里寻求帮助的时候可不是这么懒的时候另外:您是否选择了任何行?