Tag: showdialog

wpf中的DialogResult问题

我有一个窗口,我打开几次作为ShowDialog。 每次打开它我都会在第一次使用new关键字时: var myWindow = new MyWindow(); myWindow.ShowDialog(); 我第二次从MyWindow View Model类中打开它: new MyWindow().ShowDialog(); 在MyWindow代码后面我有2个事件。 一个是用户clcik ok,另一个是用户点击取消时。 void OnCancel(){ DialogResult = false; } void OnOk(){ DialogResult = true; } 事件从视图模型类触发,形成ICommand执行,而不是绑定到窗口的“确定”和“取消”按钮。 在xaml中,我为取消按钮执行了此操作: IsCancel = true; 这对于ok按钮: IsDefault = true; 在我第一次打开窗口时,我可以设置DialogResult = true,但在此之后,当我尝试设置DialogResult时,我有exception“Dialofresult只能在创建窗口后设置并显示为ShwDialog”。 我也看到DialogResult在第一次设置为true后是真的,我认为exception的原因,但我不明白为什么如果我关闭窗口并使用new关键字创建一个新的,为什么是真的。 。 任何建议 提前致谢 编辑:问题是,一旦我clcik“ok”按钮,DialogResult设置为true和saty true,我不能将其设置为false。 编辑 谢谢大家,我解决了这个问题。 问题是我注册了View Model事件(单击“ok”并点击“取消”)当用户点击“取消”时我删除了注册,但是当他点击“确定”时却没有…

为什么关闭嵌套子对话框也会关闭父对话框?

我使用ShowDialog打开一个表单作为modal dialog。 此对话框允许使用ShowDialog再次打开另一个窗体作为模式对话框。 当最里面的对话框关闭时,这也会导致其父对话框关闭。 为什么会发生这种情况,我该如何预防呢? 我已经创建了问题的hello world版本来说明这一点。 表格1: private void OpenForm2Button_Click(object sender, EventArgs e) { Form2 testForm = new Form2(); DialogResult dialogResult = new DialogResult(); dialogResult = testForm.ShowDialog(); MessageBox.Show(“Form 2 returned: ” + Convert.ToString(dialogResult)); } 表格2: … this.Form2OKButton.DialogResult = System.Windows.Forms.DialogResult.OK; this.Form2CancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; … this.AcceptButton = this.Form2OKButton; this.CancelButton = this.Form2CancelButton; … private void OpenForm3Button_Click(object sender, […]

哪个是调用Form.ShowDialog()的更好方法?

哪个是显示modal dialog的更好方法? form1 frm=new form1(); frm.showDialog() 要么 (new form1()).showDialog();

C#显示对话框线程

我有一个Dialog Box (导入程序),我用它来选择我要导入到应用程序的文件。 此Dialog Box (导入程序)还有另一个对话框(文件),它是一个OpenFileDialog 。 代码运行这样的东西 //Main File if (Importer.ShowDialog == DialogResult.Ok){ // Start Import } //Importer File OnDoubleClick of TextBox if(File.ShowDialog == DialogResult.Ok){ // Find File } 但是在第二个ShowDialog我总是得到以下错误: An unhandled exception of type ‘System.Threading.ThreadStateException’ occurred in System.Windows.Forms.dll Additional information: Current thread must be set to single thread apartment (STA) mode before OLE […]

我在Windows窗体中的跨线程调用有什么问题?

我遇到Windows窗体应用程序的问题。 必须从另一个线程显示一个表单。 所以在表单类中,我有以下代码: private delegate void DisplayDialogCallback(); public void DisplayDialog() { if (this.InvokeRequired) { this.Invoke(new DisplayDialogCallback(DisplayDialog)); } else { this.ShowDialog(); } } 现在,每次运行它时,都会在this.ShowDialog();行上抛出InvalidOperationException this.ShowDialog(); : “跨线程操作无效:控制’SampleForm’从其创建的线程以外的线程访问。” 这段代码出了什么问题? 这不是一种有效的跨线程调用方式吗? ShowDialog()有什么特别之处吗?