3

WinFormsでDataGridViewを使用しており、このコードによって列と値を割り当てています。

dataGrid.DataSource = sourceObject;

この行によってのみ、すべての列と値がグリッドに配置されます。特定の行またはフィールドのonClickイベントを処理するにはどうすればよいですか。グリッド内の特定のアイテムを編集したいのですが、イベントメソッドからアイテムのIDを送信する方法が見つかりません。

わからないクラスDataGridViewEventHandlerがありますか?

また、ボタンとして手動で列を追加しようとしましたが、アクションメソッドonClickを割り当てる方法が見つかりませんでした。

4

2 に答える 2

5

DataGridView内のセルの「OnClick」イベントは存在しないため、見つかりません。セル操作とイベント用に提供されているDataGridViewイベントのMSDNページをご覧ください

使用する可能性のあるイベントに関する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");
    }
}

お役に立てれば

于 2010-01-31T14:11:53.400 に答える
1

Here、DataGridViewのイベントのリストを表示できます。セルがクリックされたかどうかを確認したい場合は、CellMouseclickイベントを消費する必要があります。コードでは、次のようにイベントを処理できます。

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

}

セルに関する具体的な詳細を取得するには、上記の「e」プロパティを使用できます。タイプDataGridViewCellMouseEventArgsです。これにより、その特定のセルに関する情報が得られます。最初のリンクにある他のほとんどのイベントも同じように処理できます。(もちろん、すべてのイベントがDataGridViewCellMouseEventArgs引数として含まれるわけではありません)。

于 2010-01-31T13:33:58.823 に答える