解决界面初始化显示时,按钮等背景图片显示不完整问题:
界面绑定事件: this.Shown += new Syste
//显示委托
private delegate void showDelegate();
/// <summary>
/// 窗体所有控件加载完成后执行耗时操作,只会触发一次
/// </summary>
private void FrmDraw_Shown(object sender, EventArgs e)
{
Application.DoEvents();
Thread thread = new Thread(new ThreadStart(CrossThreadFlush));
thread.IsBackground = true;
thread.Priority = ThreadPriority.Lowest;
thread.Start();
}
private void CrossThreadFlush()
{
//异步调用
if (viewControl.InvokeRequired)//等待异步
{
showDelegate fc = new showDelegate(OpenShowDxfFile);
this.BeginInvoke(fc); //通过代理调用刷新方法
}
else
{
OpenShowDxfFile();
}
}
[DllImport("user32.dll")]
//锁定键盘及鼠标
static extern void BlockInput(bool Block);
//绘制打开的文件
private void OpenShowDxfFile()
{
try
{
if (fileInfoOpen.FileName != null)
{
//耗时操作。。。
// Task.Run(() => //较慢
Thread thread = new Thread( ()=>
{
BlockInput(true);//锁定鼠标及键盘
//耗时操作。。。。
BlockInput(false); //解除锁定
});
thread.IsBackground = true;
thread.Start();
}
}
catch (Exception ex)
{
string msg = ex.Message;
}
}
m.EventHandler(this.FrmDraw_Shown);