Form.ShowDialog(this)
来源:互联网 发布:源码交易平台 编辑:程序博客网 时间:2024/06/16 11:02
有时遇到一种情况,.ShowDialog()不显示,也不报错;如下:
<span style="font-size:14px;"> private void button1_Click(object sender, EventArgs e) { Thread thread = new Thread(show); thread.Start(); } void show() { Control.CheckForIllegalCrossThreadCalls = false; //this.Invoke(new Action(() => //{ if (saveFileDialog1.ShowDialog() == DialogResult.OK) { } //})); }</span>原因分析:这属于线程间操作的一种异常。界面呈现和新创建的thread分开在两个线程中。在thread线程中
不能够进行界面呈现,即显示.ShowDialog();
解决方法:1:添加参数this。
.ShowDialog(IWin32Window owner); //owner:表示将拥有模式对话框的顶级窗口
<span style="font-size:14px;"> private void button1_Click(object sender, EventArgs e) { Thread thread = new Thread(show); thread.Start(); } void show() { Control.CheckForIllegalCrossThreadCalls = false; //this.Invoke(new Action(() => //{ if (saveFileDialog1.ShowDialog(this) == DialogResult.OK) { } //})); }</span>
2:使用Invoke
private void button1_Click(object sender, EventArgs e) { Thread thread = new Thread(show); thread.Start(); } void show() { // Control.CheckForIllegalCrossThreadCalls = false; this.Invoke(new Action(() => { if (saveFileDialog1.ShowDialog() == DialogResult.OK) { } })); }
0 0
- Form.ShowDialog(this)
- C# showdialog(this) 与showdialog()的区别
- Form的show()和showDialog()
- Application.Run() form.show form.showdialog
- C# Form之间传递数据(ShowDialog类型)
- C# DialogResult.OK == Form.ShowDialog()
- c#中的Form.Show和Form.ShowDialog的区别
- 非模式窗体 模式窗体 form.show() form.showdialog c#
- 诠释.net中 Form.show()与 Form.ShowDialog()
- c#中的Form.Show和Form.ShowDialog的区别
- showdialog
- showDialog
- showDialog
- ShowDialog
- ShowDialog
- 窗体类Form中方法Show()和ShowDialog()的区别
- CSharp-基本原理-Application.Run()、Application.Run()、Form.ShowDialog()
- C# Show() 与 ShowDialog() Form.Show()与application.run()区别
- Python中thread 多线程处理
- 如何修改MySql用户密码
- 卡特兰数 大数模板
- BigDecimal总结
- 新GRE阅读关于厄尔尼诺
- Form.ShowDialog(this)
- 赋值构造函数和拷贝构造函数
- 使用innobackupex备份mysql遇到的问题
- mysql触发器
- C/C++字符串的输入
- Git 开branch分支
- java+js实现展示本地文件夹下的所有图片demo
- UITableView优化
- MD5加密