it-swarm.com.ru

Как выбрать полную строку dataGridView, когда пользователь щелкает ячейку этой строки?

У меня есть dataGridView, и мне нужно, чтобы, когда пользователь щелкает мышью на любой ячейке, также выделялась вся строка, содержащая эту ячейку. (мультиселект отключен) Я пытался получить currentRowIndex вот так

 int Index = dataGridView1.CurrentCell.RowIndex;

Тем не менее, я не уверен, как использовать индекс для выбора этой строки ... Попробовал этот и другие шесть способов безуспешно:

dataGridView1.Select(Index);

Вы знаете, как я могу это сделать?

44
Alex Terreaux

Вам необходимо установить SelectionMode для datagridview равным FullRowMode.

Примечание: в Visual Studio 2013 с .NET 4.5 свойство называется FullRowSelect, см. https://msdn.Microsoft.com/en-us/library/3c89df86(v=vs.110).aspx

83
urlreader

Если вы хотите, чтобы строка была выбрана программно, вы бы использовали событие щелчка ячейки datagridview: показанное в VB.net и C #

VB.Net

Private Sub dgvGrid_CellClick(sender as System.Object, e as System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvGrid.CellClick
    If e.RowIndex < 0 Then
        Exit Sub
    End If

    intIndex = e.RowIndex
    dgvGrid.Rows(intIndex).Selected = True
Exit Sub

C #

private void dgvRptTables_CellClick(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
    if (e.RowIndex < 0) {
        return;
    }

    int index = e.RowIndex;
    dgvGrid.Rows[index].Selected = true;
}
8
Rick H.

В свойствах DataGridView Установить

  • MultiSelect -> True
  • SelectionMode -> FullRowSelect

2
Champ_01

Мог бы сделать что-то подобное

protected override void Render(HtmlTextWriter writer)
{
    foreach (GridViewRow row in Results.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            row.Attributes["onmouseover"] = "this.style.cursor='pointer';";
            row.CssClass = "rowHover";
            row.ToolTip = "Click row to view person's history";
            row.Attributes.Add("onclick", this.ClientScript.GetPostBackClientHyperlink(this.Results,"Select$" & r.RowIndex , true));
        }
    }

    base.Render(writer);
}
1
Tom McDonough

Вы можете сделать это: может быть, это может помочь вам.

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex>0)
        {
            int rowindex = e.RowIndex;
            DataGridViewRow row= this.dataGridView1.Rows[rowindex];
        }
    }
0
Engr Inzamam ul Haq
//class to store ID (Pri. Key) value of selected row from DataGridView
public class Variables
{
   public static string StudentID;
}                                  

//This is the event call on cell click of the DataGridView
private void dataGridViewDisplay_CellClick(object sender, DataGridViewCellEventArgs e)
{
   Variables.StudentID =this.dataGridViewDisplay.CurrentRow.Cells[0].Value.ToString();
//textBoxName is my form field where I set the value of Name Column from the Selected row from my DataGridView 

   textBoxName.Text = this.dataGridViewDisplay.CurrentRow.Cells[1].Value.ToString();

   dateTimePickerDOB.Value = Convert.ToDateTime(this.dataGridViewDisplay.CurrentRow.Cells[2].Value.ToString());
}

Посмотрите на My DataGridView

0
Parag555