public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; Thread t = new Thread(new ThreadStart(SH)); t.Start();
} private void SH() { Test a = new Test(); a.ShowReport(); } } class Test { public void ShowReport() { ShowDialoge(); } private void ShowDialoge() { MessageBox.Show("1"); } }
MessageBox.Show("1"); 没有最小化啊
if (this.WindowState == FormWindowState.Minimized) { this.WindowState = FormWindowState.Normal; }
副线程创建UI问题,只是,就算Show出来了,也不能阻塞主线程,MessageBox就失去作用了,如果你并不是要显示的模式窗口的话,倒可以。//用主线程来显示对话框 private void SH() { this.Invoke((MethodInvoker)(delegate { Test a = new Test(); a.ShowReport(); })); }
{
if (MessageBox.Show("您想打开这个文件吗?", "导出到...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
try
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = fileName;
process.StartInfo.Verb = "Open";
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
process.Start();
}
catch
{
MessageBox.Show(OwnerForm, "您的计算机中未安装Excel,不能打开该文档!", System.Windows.Forms.Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
{
这里边是一个大大地方法啊,里边有个小小的对话框;
除了这个还有好多别的对话框,这些对话框不好提出来,比如:fileName这个参数就是大方法里边的
大侠能不能不唠嗑啊
弹出一个对话框;//对话框出来就憋屈到任务栏去了
}
那方法太大,我不想再去改动它,改的东西太多了~~~
主线程执行到末尾才会去执行你的子线程
追加20分
你说难不难处理?
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
Thread t = new Thread(new ThreadStart(SH));
t.Start();
}
private void SH()
{
Test a = new Test();
a.ShowReport();
}
} class Test
{
public void ShowReport()
{
ShowDialoge();
}
private void ShowDialoge()
{
MessageBox.Show("1");
}
}
没有最小化啊
if (this.WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Normal;
}
private void SH()
{
this.Invoke((MethodInvoker)(delegate
{
Test a = new Test();
a.ShowReport();
}));
}