gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:05:11 49 4
gpt4 key购买 nike

我有一个主 WPF 窗口,mywindow.showDialog单击窗口上的按钮时,将执行命令假设命令是 SendToTableCommand

protected virtual void SendToTableExecute(object o)
{
UIThread.BeginInvoke(new Action<object>(SendToTableExecuteUI),o);
}

private void SendToTableExecuteUI(object o)
{
if (o is Control)
{
m_OwningWindow = UIHelper.FindVisualParent<Window>((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 抛出异常。所以我添加了一个使用 IsThreadModal 的 if 检查。它已经工作了一段时间,但现在 m_OwningWindow 没有关闭,因为 IsThreadModal 为 false。

我不知道什么是解决问题的正确方法,认为我没有正确处理它。请帮忙。提前致谢

最佳答案

Jason 的回复让我想起了一个解决方法。即使用 Window.Close(),然后在窗口上添加一个 bool 类型的属性,比如 OKClicked,用 window.Close() 替换任何设置 DialogResult 的地方; window.OKClicked = 真或假。用 window.OKClicked 替换对 window.DialogResult 的引用。解决方法有什么问题吗?谢谢

关于c# - 只有在 Window 创建并显示为对话框后才能设置 DialogResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889162/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com