编辑(1:54 PM CST):您想要的代码是这样的,因为您将包装更新代码/方法调用以在其中进行更新:
if(FindFocusedControl(this).GetType().ToString() != "GridViewEdit")
{
}
这将检查活动控件(在本例中为 propertygrid 中的单元格)是否处于活动状态,如果为 true,则跳过嵌套代码。
使用此 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);
由于您是新用户,如果这对您有用,您可以通过单击所提供答案左侧的复选标记来接受答案。这可以让其他用户在以后遇到您的问题时知道什么对您有用。