gpt4 book ai didi

c# - 如何防止在 PropertyGrid 中滚动刷新?

转载 作者:行者123 更新时间:2023-11-30 14:21:04 28 4
gpt4 key购买 nike

我在工具应用程序中使用 PropertyGrid 来显示一个窗口来监视远程应用程序中的对象。每隔一秒左右,我都会从应用程序中获取更新,其中包含已更改的任何成员的状态,并且我会更新网格。我调用 Refresh() 进行更改。除了一件事,这一切都很好。

假设对象太高而无法放入网格,因此有一个滚动条。用户选择了一个网格项目,但也向上滚动到它上面,以便所选项目位于控件底部下方。

问题在于,在 Refresh() 上,控件会自动将网格项目滚动到 View 中(奇怪的是,当项目位于控件顶部上方时,它不会执行此操作)。

我正在寻找一种方法来防止这种情况,或者保存状态,执行 Refresh(),然后将其设置回去。我尝试在 PropertyGrid 内的 PropertyGridView 中获取底层 VScrollBar,并弄乱“值”,但它不会永久设置。始终弹回以便查看该项目。

在滚动过程中取消选择项目是我的后备方案(自动滚动到 View 不会在没有选定的网格项目的情况下发生)但它会稍微损害可用性所以我正在寻找另一种方式。

有人遇到过类似的事情吗?

最佳答案

这在 MS PropertyGrid 中是不可能的。该组件有太多无法访问的内部结构,无法为您提供所需的灵 active ,而且您自己意识到它不一致(您遇到网格下方的属性问题,但网格上方的属性则没有)。这就是我创建 Smart PropertyGrid.Net 的原因.如果您可以选择商业产品,则此网格可以选择存储属性状态并在您对网格执行操作(如 Refresh())后恢复它们而不会出现任何闪烁。

关于c# - 如何防止在 PropertyGrid 中滚动刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/288893/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com