Tag: dialogresult

只有在创建Window并显示为对话框后才能设置DialogResult

我有一个主WPF窗口,mywindow.showDialog,当在窗口上单击一个按钮时,执行一个命令让我们说命令是SendToTableCommand protected virtual void SendToTableExecute(object o) { UIThread.BeginInvoke(new Action(SendToTableExecuteUI),o); } private void SendToTableExecuteUI(object o) { if (o is Control) { m_OwningWindow = UIHelper.FindVisualParent((Control)o); } do sth… if (m_OwningWindow != null) { //only set DialogResult when window is ShowDialog before if(System.Windows.Interop.ComponentDispatcher.IsThreadModal) m_OwningWindow.DialogResult = true; } } 前一段时间, m_OwningWindow.DialogResult = true抛出exception。 所以我添加了一个使用IsThreadModal的if检查。 它已经工作了一段时间,但现在m_OwningWindow不会因为IsThreadModal是假的而关闭。 我不知道解决问题的正确方法是什么,并认为我没有正确处理它。 请帮忙。 提前致谢

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”并点击“取消”)当用户点击“取消”时我删除了注册,但是当他点击“确定”时却没有…

无法使用DialogResult

我尝试使用DialogResult来检查Messagebox的YesNoCancel 。 我正在使用以下代码,我没有看到任何问题: DialogResult dlgResult = MessageBox.Show( “Save changes before closing?”, “Warning”, MessageBoxButton.YesNoCancel, MessageBoxImage.Question); 但Visual Studio引发了我的错误说法 ‘System.Windows.Window.DialogResult’是’属性’,但用作’类型’

XNA上的MessageBox和对话框(C#)

我将以下代码作为我的XNA游戏的一部分: private void gameOver() { if (!m_IsGameOver) { string message = String.Format(“GAME OVER!!!{0}Your score is: {1}”, Environment.NewLine, GameScore); if (MessageBox.Show(message, “GameOver”, MessageBoxButtons.OK) == DialogResult.OK) { this.Exit(); } m_IsGameOver = true; } } private void gameWon() { string message = String.Format(“You Won!!!{0}Your score is: {1}”, Environment.NewLine, GameScore); if (MessageBox.Show(message, “You Won!”, MessageBoxButtons.OK) == DialogResult.OK) { this.Exit(); […]

是否可以为表单重载ShowDialog方法并返回不同的结果?

编辑:这个方法实际上工作得很好,我问它后来找到了解决方案。 我在重载的ShowDialog()方法中添加了正确的调用(它不是过载,甚至是重写,但它的工作原理相同。我的新问题是底部的问题。 我有一个表单,您可以在其中单击三个按钮之一。 我已经为返回的结果定义了一个枚举。 我想打电话: MyFormResults res = MyForm.ShowDialog(); 我可以使用以下代码添加一个新的ShowDialog方法: public new MyFormResults ShowDialog() { //Show modal dialog base.ShowDialog(); //This works and somehow I missed this return myResult; //Form level variable (read on) } 单击按钮时,我为结果设置了一个表单级变量: MyFormResults myResult; private void btn1_click(object sender, EventArgs e) { myResult = MyFormsResults.Result1; this.DialogResult = DialogResult.OK; //Do I need this for […]

无法在WPF中设置DialogResult

我在调用窗口中使用ShowDialog()显示一个WPF窗口。 窗口打开,按预期模态。 但是,在我的确定和取消按钮的对话窗口中的单击事件中,我分别设置了this.DialogResult = true(或false),并且未设置该值。 窗口按预期关闭,但DialogResult仍为null。 这是WPF中的错误吗? 或者是否有原因无法设置DialogResult属性但不会抛出exception? 该窗口未托管在浏览器中。 调用窗口中的代码: Window2 win = new Window2(); bool? result = win.ShowDialog(); if (result.HasValue && result.Value) { //never gets here because result is always null } 对话框窗口中的代码: this.DialogResult = true;

SaveFileDialog上的DialogResult.OK不起作用

我尝试,当我在SaveFileDialog按保存时,我做了一些事情。 我尝试修复但总是出错。 SaveFileDialog dlg2 = new SaveFileDialog(); dlg2.Filter = “xml | *.xml”; dlg2.DefaultExt = “xml”; dlg2.ShowDialog(); if (dlg2.ShowDialog() == DialogResult.OK) {….} 但我有错误 – 这说: 错误: ‘System.Nullable’不包含’OK’的定义,并且没有扩展方法’OK’可以找到接受类型’System.Nullable’的第一个参数(你是否缺少using指令或汇编引用?) 我尝试修复此代码: DialogResult result = dlg2.ShowDialog(); //here is error again if (result == DialogResult.OK) {….} 现在错误是在DialogResult上说: ‘System.Windows.Window.DialogResult’是’属性’但是像’类型’一样使用

正确使用DialogResult

在回答我最近的问题( 这里 )时,Hans Passant表示我应该设置DialogResult来关闭我的表单而不是form.Close()虽然我似乎无法找出原因? 如果我已经正确阅读,MSDN文档说明这样做只会隐藏表单而不是正确处理它我相信.Close()要做什么? 从文档中提取 。 当用户单击对话框的“关闭”按钮或设置DialogResult属性的值时,不会自动调用Close方法。 相反,表单是隐藏的,可以再次显示,而无需创建对话框的新实例。 由于此行为,您必须在应用程序不再需要表单时调用表单的Dispose方法。 另一方面,Microsoft已经创建了一个支持页面 ,其中说明了如何使用DialogResult属性,并在其“validation它工作”部分中声明单击这样将关闭表单。 所以我的问题是双重的,我应该继续使用Close或DialogResult; 并且对话框结果关闭或隐藏表单。 从我下面的代码(一个带有两个按钮的简单表单)中,它似乎确实仅作为断点隐藏在此this.Close()被击中..(使用this.Close()注释,表单仍然消失,只是不确定是否隐藏) public Form1() { InitializeComponent(); button1.Click += (s, e) => { //I edited my question to include using using(Form1 form = new Form1()) { form.ShowDialog(); } }; button2.Click += (s, e) => { this.DialogResult = DialogResult.OK; this.Close(); }; }