如果将300像素高的DataGridView放置在300像素高的面板上,以便在面板上有一个滚动条,然后向下滚动以显示网格的下半部分,然后单击面板外的控件,然后单击网格中的一行,面板将向上滚动到顶部,并选择了网格中的错误行。

这不仅仅是一个DataGridView;它发生在面板上方的任何控件上,例如Infragistics UltraWinGrid,Rich Text Box。我将其作为Infragistics的错误提出,但他们说这是Microsoft的问题。

我已经尝试将所有相关事件用于控件,但是面板滚动发生在事件触发之前。

有什么建议?

最佳答案

我猜您正在将面板的AutoScroll属性设置为true。这样做时,切换应用程序会将滚动位置重置为零,面板将重置其位置。

如果关闭AutoScroll并添加自己的滚动条,则可以设置滚动条的最大值和最小值以匹配面板的要求,然后在滚动条的Scroll事件中设置面板的滚动值。切换窗口时不会重置。

就像是:

private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
    panel1.VerticalScroll.Value = vScrollBar1.Value;
}

这是我的新手,我不得不重新创建它。我可能不得不在我的网站上添加一篇有关它的文章:-)

10-07 19:45
查看更多