0

如果我在 C# Win Forms 应用程序中有两个 DataGridView 项,并且它们始终设置相同的列,我如何确保它们始终以相同的方式排序?

当一个网格或其他网格排序时,我可以收到通知,但是如果我尝试使用该通知以相同的方式对另一个网格进行排序,我会得到堆栈溢出(原因很明显)。

我确信我可以通过一些丑陋的黑客来解决堆栈溢出问题,但我认为必须有一种正常的方法来做到这一点。当用户对它们进行排序时,我不能成为第一个需要保持两个 DataGridView 同步的人。

4

1 回答 1

1

我得到一个堆栈溢出(原因很明显)。

如果没有示例代码,它们可能并不明显。您是否因为每个更新通知都会更新另一个导致无限循环的网格而导致堆栈溢出?

那你为什么不保持 bools 像这样跟踪状态:

bool Grid1Fired = false;
bool Grid2Fired = false;

void handler_Grid1(..)
{
    if(Grid1Fired == false && Grid2Fired == false)
    {
        Grid1Fired = true;
        SortGrids();
    }
}
void handler_Grid2(..)
{
    if(Grid1Fired == false && Grid2Fired == false)
    {
        Grid2Fired = true;
        SortGrids();
    }
}

void SortGrids()
{
    if(Grid1Fired)
    {
        // sort grid 2
    }
    else if(Grid2Fired)
    {
        // sort grid 1
    }
    Grid1Fired = false;
    Grid2Fired = false;
}
于 2012-07-02T16:57:58.703 回答