0

DataGridCheckBoxColumn を持つ動的データグリッドを持つ動的タブと、データグリッド チェックボックスのすべてを選択するトリガーとなる動的チェックボックスをタブに追加しました。

私はこれらの線に沿って何かを実装しようとしています。

private void cbSelectAll_CheckedChanged(object sender, EventArgs e)
{

    if (cbSelectAll.Checked)
    {
        foreach (DataGridViewRow row in relatedPatientsDG.Rows)
        {
            row.Cells[0].Value = true;
        }
    }
    else
    {
        foreach (DataGridViewRow row in relatedPatientsDG.Rows)
        {
            row.Cells[0].Value = false;
        }
    }
}

しかし、このメソッドも動的であり、タブ上ですべてを動的に作成しているため、どのタブ/データグリッド DataGridCheckBoxColumn が選択されたかを確認する必要があります。

例として、 relatedDG と呼ばれる dataGrid に DataGridColumnCheckBox がある場合、すべてを選択してすべてを選択解除するイベント メソッドは次のようになります。同様の変更を行う必要がありますが、動的な datagridcheckbox の場合は何もハードコーディングされていません。

private void cbSelectAllSameVisits_CheckedChanged(object sender, EventArgs e)
{
    if (cbSelectAllSameVisits.Checked)
    {
        foreach (DataGridViewRow row in relatedDG.Rows)
        {
            row.Cells[0].Value = true;
        }

    }
    else
    {
        foreach (DataGridViewRow row in relatedDG.Rows)
        {
            row.Cells[0].Value = false;
        }
    }
}
4

1 に答える 1

0

グリッドとチェックボックスの各ペアが同じタブページにあるという事実を利用できます。これらは両方とも同じコンテナ コントロールの子です。

CheckedChangedこれにより、作成時にすべてのチェックボックスのイベントにアタッチする単一のメソッドを持つことができます。

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
    CheckBox cb = sender as CheckBox;
    DataGridView dg = cb.Parent.Controls.Cast<Control>()
                        .Where(c => c.GetType() == typeof(DataGridView))
                        .FirstOrDefault() as DataGridView;

    if (dg != null)
    {              
        if (cb.Checked)
        {
            foreach (DataGridViewRow row in dg.Rows)
            {
                row.Cells[0].Value = true;
            }
        }
        else
        {
            foreach (DataGridViewRow row in dg.Rows)
            {
                row.Cells[0].Value = false;
            }
        }           
    }            
}  

そのコードは、イベント ハンドラーの送信者パラメーターを使用して、クリックされたチェックボックスを識別し、そのチェックボックスの親に属するコントロールを検索して、最初の DataGridView を探します。

于 2012-07-23T22:23:30.997 に答える