0

CheckedChangedチェックボックスのイベントで実行される次のコードがあります。

/// <summary>
/// Determine whether to select all order records
/// </summary>
/// <param name="sender">determine sender object</param>
/// <param name="e">event args</param>
private void CbSelectAll_CheckedChanged(object sender, EventArgs e)
{
    if (this.dgvOrderLines.Rows.Count != 0)
    {
        bool value = this.CbSelectAll.Checked;

        for (int i = 0; i < this.dgvOrderLines.RowCount; i++)
        {
            this.dgvOrderLines[0, i].Value = value;
        }

        if (value)
        {
            this.btnFailed.Enabled = true;
            this.BtnDownload.Enabled = true;
        }
        else
        {
            this.btnFailed.Enabled = false;
            this.BtnDownload.Enabled = false;
        }
    }
}

問題は、これが実際に下線を更新していないように見えることですDataSource。ループするチェックボックス列は、視覚的に正常に更新されます。

したがって、次の手順を実行すると、ユーザーがボタンを押した後も、選択した行すべてのチェックボックス列に誤った値が表示されます。

Order[] orderlines = ((SortableBindingList<Order>)this.dgvOrderLines.DataSource).Where(x => x.Include == true).ToArray();

私がどこで間違っているのかについて何か考えはありますか?

4

1 に答える 1

0

したがって、上記の方法は完全に正常に機能していたことがわかります。

週末の後で戻ってみると、奇妙なことに、必要なものを処理する前ではなく、処理する前にメソッドが呼び出されていることがわかります。

これは、新しいデータのGUIを早すぎる時期にリセットした場合でした。

于 2012-09-24T08:32:58.467 に答える