[英]How can I flush buffer of form object properties BEFORE a Process.Start is executed?
單擊按鈕后,我對表單元素進行了一些更改(隱藏一些,顯示一些,將一些顯示在前面等)。 在更改了這些表單元素之后,我使用Process.Start()運行了一個外部進程。 但是,即使那些表單元素布局更改在Process.Start()調用之前順序編碼,也不會在我的Process.Start()之前執行/顯示。
您如何強制清除似乎已緩沖的這些布局更改?
您可以在要重繪的控件上嘗試使用Control.Invalidate(true)
函數。
這是一篇有關Refresh
, Update
和Invalidate
之間的區別的好文章
基於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.