UserControl Invalidate()方法。如何在UserControl

时间:2017-07-03 22:37:03

标签: c# user-controls invalidation

我创建了UserControl类,一切正常。只是想知道Invalidate有什么方法。它实际上并没有使我的类中的控件无效,并且在调用它时我没有发现任何效果。任何人都可以解释这个方法在UserControl类中的作用。

enter image description here

1 个答案:

答案 0 :(得分:2)

要制作UserControl Invalidate所有嵌套控件,您需要调用Invalidate(invalidateChildren)的特殊重载:

yourUserControl.Invalidate(true);
  

使控件的特定区域无效并导致绘制   要发送给控件的消息。 (可选)使孩子无效   分配给控件的控件。

备注:

  

说明

     

调用Invalidate方法不会强制执行同步绘制;至   强制同步绘制,调用后调用Update方法   无效方法。当没有参数调用此方法时,   整个客户区域被添加到更新区域。

<强>更新

如果你想从UI线程以外的线程调用它,你需要使用Invoke,可能是这样的:

public delegate void InvalidateUC();
public InvalidateUC myInvalidateDelegate;

public void InvalidateMethod()
{
    yourUserControl1.Invalidate(true);
}

现在,做完

myInvalidateDelegate = new InvalidateUC(InvalidateMethod);

你可以从另一个线程

中调用它
yourForm.yourUserControl1.Invoke(myInvalidateDelegate);

请注意,如果您不确定该调用是否实际来自非ui线程,您可以(并且应该)添加条件

if (yourForm.yourUserControl1.InvokeRequired)..