簡體   English   中英

UserControl Invalidate()方法。 如何正確使UserControl中的子控件無效

[英]UserControl Invalidate() method. How to properly invalidate the child controls in a UserControl

我已經創建了UserControl類,並且一切正常。 只是想知道Invalidate會做什么。 實際上,它不會使我的類中的控件無效,並且在調用它時我沒有發現任何影響。 任何人都可以在UserControl類中解釋此方法的作用。

在此處輸入圖片說明

要使UserControl使所有嵌套控件Invalidate您需要調用Invalidate(invalidateChildren)的特殊重載:

yourUserControl.Invalidate(true);

使控件的特定區域無效,並導致將繪制消息發送到控件。 (可選)使分配給該控件的子控件無效。

請注意以下幾點:

備注

調用Invalidate方法不會強制執行同步繪制。 要強制執行同步繪制,請在調用Invalidate方法之后調用Update方法。 當不帶任何參數調用此方法時,整個客戶區將添加到更新區域。

更新資料

如果要從UI線程以外的其他線程InvokeInvoke ,則需要使用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)..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM