gpt4 book ai didi

c# - 如何: Refresh PropertyGrid when user is not editing

转载 作者:行者123 更新时间:2023-11-30 17:11:26 37 4
gpt4 key购买 nike

这是我在 stackoverflow 上的第一个问题,所以如果我有任何错误,请多多包涵。

背景:我有一个 Winform PropertyGrid,它显示相机对象的增益和曝光等状态。用户可以通过 PropertyGrid 轻松控制/编辑相机属性。同时,相机对象周期性地从物理相机中查询最新状态,并通过 INotifyProperfyChanged 在 PropertyGrid 中刷新。

问题:如果在用户在 propertygrid 上输入/编辑数据(例如输入新的快门时间值)时发生刷新,焦点会突然丢失,输入的值将被来自相机的新值替换。这导致了不友好的 UI 体验。

问题:如何防止 PropertyGrid 在用户进行编辑时执行刷新?

提前致谢。

最佳答案

编辑(美国中部标准时间下午 1:54):您需要的代码是这样的,因为您将包装更新代码/方法调用以在其中执行更新:

if(FindFocusedControl(this).GetType().ToString() != "GridViewEdit")
{

}

这将检查事件控件(在本例中为 propertygrid 中的单元格)是否处于事件状态,如果为真则跳过嵌套代码。


利用 this SO question and answer 中的以下方法您应该能够将执行更新的任何代码包装在 If 条件中,以检查正在关注/使用的控件。如果正在使用的控件是 propertygrid,请不要执行任何操作。

    public static Control FindFocusedControl(Control control)
{
var container = control as ContainerControl;
while (container != null)
{
control = container.ActiveControl;
container = control as ContainerControl;
}
return control;

}

如果您想尝试一下,请将其传递给您的表单并查看结果:

var a = FindFocusedControl(this);

由于您是新用户,如果这适合您,您可以通过单击所提供答案左侧的复选标记来接受答案。这可以让其他用户在以后遇到您的问题时知道什么对您有用。

关于c# - 如何: Refresh PropertyGrid when user is not editing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418882/

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