1

各 TabPage に DataGridView を持つ TabControl があります。DataGridView には、Column[0] に DataGridViewCheckBoxCell があります。

すべての TabPages の DataGridView の同じ Row にある DataGridViewCheckBoxes のチェックを外したい。

クリックした TabPage の DataGridView にしかアクセスできません。myDataGrid_CellContentClick イベントの送信者オブジェクトには、他の TabPages が含まれていないようです。

他の TabPages に checkBox を設定するにはどうすればよいですか。

void myDataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        int clickedRow = e.RowIndex;
        int clickedColumn = e.ColumnIndex;
        if (clickedColumn != 0) return;
        DataGridView myDataGridView = (DataGridView)sender;

        if (!ToggleAllRowSelection)
        {
            foreach (TabPage myTabPage in tabControl1.TabPages)
            {
                foreach (DataGridViewRow myRow in myDataGridView.Rows)
                {
                    if (myRow.Index == clickedRow)
                    {
                       ((DataGridViewCheckBoxCell)myRow.Cells[0]).Value = false;
                    }

                }
            }
        }

    }
4

1 に答える 1

0

すべての TabPage に異なる DataGrid が含まれている場合は、適切なグリッドを参照し、一致する行を選択してセルを確認する必要があります

void myDataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    int clickedRow = e.RowIndex;
    int clickedColumn = e.ColumnIndex;
    if (clickedColumn != 0) return;
    DataGridView myDataGridView = (DataGridView)sender;

    if (!ToggleAllRowSelection)
    {
        foreach (TabPage myTabPage in tabControl1.TabPages)
        {
            DataGridView grd = myTabPage.Controls.OfType<DataGridView>().FirstOrDefault();
            if(grd != null)
            {
                grd.Rows[clickedRow].Cells[0].Value  = false;
            }
        }
    }
}

このコードは、ページごとに 1 つのグリッドしかなく、各グリッドにはクリックされた行と同じ量の行が含まれていると想定していることに注意することが非常に重要です。

于 2015-07-12T08:47:41.647 に答える