Подтвердить что ты не робот

Получение данных из выбранной строки datagridview и какого события?

У меня есть DataGridView (Selectionmode: FullRowSelect) в форме окна вместе с некоторыми текстовыми полями, поэтому я хочу, чтобы каждый раз, когда пользователь выбирает строку (возможно, щелчок или double_click), содержимое этой строки должно отображаться в текстовых полях,

Я пробовал эти коды

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    MessageBox.Show("CEll Double_Click event calls");
    int rowIndex = e.RowIndex;
    DataGridViewRow row = dataGridView1.Rows[rowIndex];
    textBox5.Text = row.Cells[1].Value;
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    int rowIndex = e.RowIndex;
    DataGridViewRow row = dataGridView1.Rows[rowIndex];
    textBox5.Text = dataGridView1.Rows[1].Cells[1].Value.ToString();// row.Cells[1].Value;
}

есть много других текстовых полей, но главная проблема заключается в том, что ни одно из событий не срабатывает, какое событие я должен использовать для этого, или есть какое-то свойство datagrid, которое я мог бы установить неправильно? Любая помощь будет оценена...: (

4b9b3361

Ответ 1

Вы можете использовать событие SelectionChanged, поскольку вы используете режим выбора FullRowSelect. Затем внутри обработчика вы можете получить доступ к свойству SelectedRows и получить от него данные. Пример:

private void dataGridView_SelectionChanged(object sender, EventArgs e) 
{
    foreach (DataGridViewRow row in dataGridView.SelectedRows) 
    {
        string value1 = row.Cells[0].Value.ToString();
        string value2 = row.Cells[1].Value.ToString();
        //...
    }
}

Вы также можете пройти через коллекцию столбцов вместо ввода индексов...

Ответ 2

Вы можете попробовать это событие click

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex >= 0)
    {
        DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
        Eid_txt.Text = row.Cells["Employee ID"].Value.ToString();
        Name_txt.Text = row.Cells["First Name"].Value.ToString();
        Surname_txt.Text = row.Cells["Last Name"].Value.ToString();

Ответ 3

Сначала возьмите ярлык. установите его видимость на false, а затем в событии DataGridView_CellClick напишите это

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    label.Text=dataGridView1.Rows[e.RowIndex].Cells["Your Coloumn name"].Value.ToString();
    // then perform your select statement according to that label.
}
//try it it might work for you

Ответ 4

Вы должны проверить свой файл дизайнера. Откройте форму Form1.Designer.cs и
найти эту строку: Windows Form Designer Generated Code.
Разверните это, и вы увидите много кода. Итак, проверьте, существует ли эта строка внутри элементов управления datagridview1, если не поместить ее.

this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick); 

Надеюсь, это поможет.

Ответ 5

Простое решение будет таким, как показано ниже. Это улучшение решения из долины.

private void dgMapTable_SelectionChanged(object sender, EventArgs e) 
{
    int active_map=0;
    if(dgMapTable.SelectedRows.Count>0)
        active_map = dgMapTable.SelectedRows[0].Index;
    // User code if required Process_ROW(active_map);
}

Примечание для другого читателя, для использования вышеприведенного кода FullRowSelect следует использовать режим выбора для datagridview. Вы можете расширить это, чтобы дать сообщение, если выбрано более двух строк.