C# 一个窗体ShowShowDialog另一窗体后,如何在前一个窗体关闭ShowDialog那个窗体 C# 一个窗体ShowShowDialog另一窗体后,如何在前一个窗体关闭ShowDialog那个窗体网上搜了一些资料,说到解决方法是使用多线程,有谁可以给个例子,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能,这个窗体自己关了不就行了,modal后,你也操作不了别的窗体了,除非用定时器操作 这个必须等待前一个窗体收到关闭ShowShowDialog命令才能关闭,时间是不可预知的,另外问一下,我使用Show的方式为什么界面是空白,而使用ShowShowDialog却没有这个问题,谢谢 ShowDialog本身就是为了让你只能操作被ShowDialog的窗体,“被”ShowDialog的窗体不关闭,那打开它的窗体是不能操作的。如果你想实现你所说的功能,直接用show方法不就好了吗?为什么还要用ShowDialog呢? 我使用Show的方式为什么界面是空白,包括窗体中的控件都不显示了,而使用ShowShowDialog却没有这个问题,数据可以正常显示,不知道为什么,好像是UI线程的问题。 用show()应该是没有任何问题的,至于为什么是空白的,估计是你程序有bug。你可以用简单的测试程序试一下:在窗体1的button_Click时间中这么写:From2 f2 = new Form2();f2.Show(); 如果你show的时候有大量的数据在处理,那么那些数据处理就会占用界面资源,导致界面卡死。使用线程池可以解决此问题。 你提到的简单测试肯定是没有问题的,我这里前一个窗体需要和后一个窗体之间一直保持数据传输,从而产生的Show和ShowShowDialog的区别,不知道区别在哪里... 有道理,线程池没用过,是自定义数据缓冲区吗?还是.NET中间已经定义好的类库可供使用? void DoWithCommon() { WaitCallback waitCallback = new WaitCallback(this.InvokeMethod); ThreadPool.QueueUserWorkItem(waitCallback); } InvokeMethod(object x){}上面那段代码可解决界面卡死问题。我不明白的是你不关闭f2,却想通过关闭f1来关闭f2,这是为什么呢?从C/S架构的原理上说不通啊。 谢谢,设计需要,f1是需要一直运行呢,相当于一个传输控制中心,不是通过关闭f1来关闭f2而是在f1中关闭f2,f1不关闭。 另外,请问zerodegrees:C# Show和ShowShowDialog什么区别导致Show在处理大量数据时出现假死现象而ShowShowDialog不受此影响 这样的话,不推荐用showdialog,你用show()+线程池吧,应该能解决的。如果用showdialog会用到很麻烦的多线程编程,也能解决,但比上面那个要麻烦多了。 zerodegrees,很感谢你,能说下ShowDialog方式中多线程解决思路吗? 说实话,这个我还确实不是很清楚,我按我的理解说说吧。show和showdialog的线程机制是不一样的。showdialog的时候f1无法操作,所以f1不会占用太多的界面资源。show的时候f1和f2会同时占用界面资源。 介个我就不清楚了,O(∩_∩)O~快下班了,see you! 哦,谢谢!那个线程池的方法,WaitCallback waitCallback = new WaitCallback(this.InvokeMethod);我这里InvokeMethod是一个委托,好像参数不匹配...~~~~(>_<)~~~~ 看到一段代码,不明白,向大家请教 高手帮忙解决下。“SyncChatServer.User.client.get”必须声明主体,因为它未标记为 abstract 或 extern。谢谢 不关闭进程,如何释放它所占有的资源 sql执行中路径不一问题,谁能帮忙解决?? RowFilter 后 子集与原始数据怎样同步?高分奉上 關於更新問題 关于升级 Messenger服务 xml致命一击,我已经不堪憔悴,望神助!xml中使用html内容! 新建项目按确定键后,跟没事似的,项目也没建成,怎么回事呢? 线程问题 C#一个集合问题 该用什么集合呢
用show()应该是没有任何问题的,至于为什么是空白的,估计是你程序有bug。
你可以用简单的测试程序试一下:
在窗体1的button_Click时间中这么写:
From2 f2 = new Form2();
f2.Show();
如果你show的时候有大量的数据在处理,那么那些数据处理就会占用界面资源,导致界面卡死。
使用线程池可以解决此问题。
{
WaitCallback waitCallback = new WaitCallback(this.InvokeMethod);
ThreadPool.QueueUserWorkItem(waitCallback);
}
InvokeMethod(object x)
{}
上面那段代码可解决界面卡死问题。我不明白的是你不关闭f2,却想通过关闭f1来关闭f2,这是为什么呢?
从C/S架构的原理上说不通啊。
C# Show和ShowShowDialog什么区别导致Show在处理大量数据时出现假死现象而ShowShowDialog不受此影响
如果用showdialog会用到很麻烦的多线程编程,也能解决,但比上面那个要麻烦多了。
说实话,这个我还确实不是很清楚,我按我的理解说说吧。
show和showdialog的线程机制是不一样的。
showdialog的时候f1无法操作,所以f1不会占用太多的界面资源。
show的时候f1和f2会同时占用界面资源。
介个我就不清楚了,O(∩_∩)O~
快下班了,see you!
WaitCallback waitCallback = new WaitCallback(this.InvokeMethod);
我这里InvokeMethod是一个委托,好像参数不匹配...~~~~(>_<)~~~~