繁体   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