Событие OnClick в WinForms DataGridView - PullRequest
3 голосов
/ 31 января 2010

Я использую DataGridView в WinForms и этим фрагментом кода я назначаю столбцы и значения

dataGrid.DataSource = sourceObject;

только этой строкой все столбцы и значения в сетке. Как мне обработать событие onClick определенной строки или поля. Я хочу отредактировать определенный элемент в сетке, но не могу найти способ отправить идентификатор элемента из метода события.

Есть класс DataGridViewEventHandler, который я не понимаю?

Я также пытался добавить столбцы вручную в качестве кнопок, но не нашел способа назначить ему метод действия onClick.

Ответы [ 2 ]

5 голосов
/ 31 января 2010

Вы не можете найти "OnClick" событие для ячейки внутри DataGridView, так как оно не существует. Взгляните на страницу MSDN для событий DataGridView , предоставленных для манипуляции ячейками и событий

Вот несколько примеров из MSDN о событиях, которые вы можете использовать

Пример события CellMouseClick и обработчик

   private void DataGridView1_CellMouseClick(Object sender, DataGridViewCellMouseEventArgs e)    {

    System.Text.StringBuilder cellInformation = new System.Text.StringBuilder();
    cellInformation .AppendFormat("{0} = {1}", "ColumnIndex", e.ColumnIndex );
    cellInformation .AppendLine();
    cellInformation .AppendFormat("{0} = {1}", "RowIndex", e.RowIndex );
    cellInformation .AppendLine();
    MessageBox.Show(cellInformation.ToString(), "CellMouseClick Event" );
}

Пример события CellClick и обработчик

private void dataGridView1_CellClick(object sender,
    DataGridViewCellEventArgs e)
{

    if (turn.Text.Equals(gameOverString)) { return; }

    DataGridViewImageCell cell = (DataGridViewImageCell)
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];

    if (cell.Value == Play)
    {
        // PlaySomething()
    }
    else if (cell.Value == Sing)
    {
        // SingSomeThing();
    }
    else 
    {
     MessagBox.Show("Please Choose Another Value");
    }
}

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

1 голос
/ 31 января 2010

Here, вы можете увидеть список событий для DataGridView. Если вы хотите увидеть, была ли нажата ячейка, вам нужно использовать событие CellMouseclick. В своем коде вы можете обработать событие следующим образом:

private void DataGridView1_CellMouseClick(Object sender, DataGridViewCellMouseEventArgs e)
{
    //Do something

}

Чтобы получить конкретную информацию о ячейке, вы можете использовать свойство 'e', ​​упомянутое выше. Это типа DataGridViewCellMouseEventArgs. Это даст вам информацию об этой конкретной ячейке. Вы можете обрабатывать большинство других событий, найденных в первой ссылке, таким же образом. (Конечно, не все события будут иметь DataGridViewCellMouseEventArgs в качестве аргумента).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...