簡體   English   中英

在執行Process.Start之前,如何刷新表單對象屬性的緩沖區?

[英]How can I flush buffer of form object properties BEFORE a Process.Start is executed?

單擊按鈕后,我對表單元素進行了一些更改(隱藏一些,顯示一些,將一些顯示在前面等)。 在更改了這些表單元素之后,我使用Process.Start()運行了一個外部進程。 但是,即使那些表單元素布局更改在Process.Start()調用之前順序編碼,也不會在我的Process.Start()之前執行/顯示。

您如何強制清除似乎已緩沖的這些布局更改?

您可以在要重繪的控件上嘗試使用Control.Invalidate(true)函數。

是一篇有關RefreshUpdateInvalidate之間的區別的好文章

基於Post,我認為您想使用Refresh over Update來使之失效,然后立即更新控件

嘗試在process.Start之前運行.Refresh方法,或在單獨的線程中運行Process.Start,例如:

System.Threading.ThreadPool.QueueNewWorkerItem(new System.Threading.WaitCallback(StartProcess));

void StartProcess(object state)
{
    Process.Start(...);
}

通過將開始放在后台線程中,可以允許.NET在后台線程中的項目運行之前更新UI。 如果Process.Start與UI處於同一線程中,則在該線程中的所有進程完成運行之前,UI無法刷新。

找到答案..

mainFormName.ActiveForm.Update();

嘭嘭。

暫無
暫無

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

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