gpt4 book ai didi

C# PropertyGrid - 检查当前是否正在编辑一个值

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:30 25 4
gpt4 key购买 nike

是否有一种简单的方法可以查明用户当前是否正在编辑属性网格?

我的用例如下:我每秒更新一次网格数据。如果用户正在编辑一个值,则在调用我的更新时所有输入都会丢失。所以我想做的是仅在用户未编辑内容时更新。

最佳答案

我不认为有任何正式的方式。但是,以下代码可以检测何时使用内置文本框编辑器或下拉编辑器打开网格条目。它不会检测何时使用小的“...”编辑按钮打开条目。

public static bool IsInEditMode(PropertyGrid grid)
{
if (grid == null)
throw new ArgumentNullException("grid");

Control gridView = (Control)grid.GetType().GetField("gridView", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(grid);
Control edit = (Control)gridView.GetType().GetField("edit", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(gridView);
Control dropDownHolder = (Control)gridView.GetType().GetField("dropDownHolder", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(gridView);

return ((edit != null) && (edit.Visible & edit.Focused)) || ((dropDownHolder != null) && (dropDownHolder.Visible));
}

当然,由于它是基于网格内部结构的,以后可能会发生变化,所以,使用风险自负。

关于C# PropertyGrid - 检查当前是否正在编辑一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7553423/

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