C# 返回值而不关闭窗口wpf
我希望在不关闭WPF窗口的情况下,从WPF窗口获得一个返回值 我有一个里面有WPF usercontrol的DLL,我从我的DLL代码中调用它。 我必须调用它,它返回数据,然后我发送数据。 但我不想创建同一窗口的两个不同实例 我的代码:C# 返回值而不关闭窗口wpf,c#,wpf,dll,window,C#,Wpf,Dll,Window,我希望在不关闭WPF窗口的情况下,从WPF窗口获得一个返回值 我有一个里面有WPF usercontrol的DLL,我从我的DLL代码中调用它。 我必须调用它,它返回数据,然后我发送数据。 但我不想创建同一窗口的两个不同实例 我的代码: MP.UserControl1 a = new MP.UserControl1(); a.ShowDialog(); if (a.DialogResult.HasValue && a.Dialog
MP.UserControl1 a = new MP.UserControl1();
a.ShowDialog();
if (a.DialogResult.HasValue && a.DialogResult.Value == true)
{
a.Hide();
InitialDatas = a.inputData;
}
else
return 0;
然后我详细阐述了初始数据
现在我想在我的“a”中调用一个方法,并再次显示它,而不创建新窗口
代码:
a.SetValue(result, off1, InitialDatas);
a.ShowDialog();
我收到错误消息:无法设置可见性或在窗口关闭后调用Show、ShowDialog或EnsureHandle
有可能解决吗?我会用事件模型来解决这个问题。您可以执行以下操作:
- 在表单中创建一个事件
- 在调用者中创建事件处理程序
- 订阅事件并执行您的逻辑
namespace MyApplication
{
public delegate void MyEventHandler(object source, EventArgs e);
public class MyForm : Form
{
public event MyEventHandler OnInitialData;
private void btnOk_Click(object sender, EventArgs e)
{
OnInitialData?.Invoke(this, null);
}
}
}
以其他形式:
MP.UserControl1 a = new MP.UserControl1();
a.OnInitialData += UCA_OnInitialData;
private void UCA_OnInitialData(object sender, EventArgs e)
{
MP.UserControl1 a = sender as MP.UserControl1;
a.SetValue(result, off1, a.inputData);
}
a.ShowDialog();
我会用事件模型来解决这个问题。您可以执行以下操作:
- 在表单中创建一个事件
- 在调用者中创建事件处理程序
- 订阅事件并执行您的逻辑
namespace MyApplication
{
public delegate void MyEventHandler(object source, EventArgs e);
public class MyForm : Form
{
public event MyEventHandler OnInitialData;
private void btnOk_Click(object sender, EventArgs e)
{
OnInitialData?.Invoke(this, null);
}
}
}
以其他形式:
MP.UserControl1 a = new MP.UserControl1();
a.OnInitialData += UCA_OnInitialData;
private void UCA_OnInitialData(object sender, EventArgs e)
{
MP.UserControl1 a = sender as MP.UserControl1;
a.SetValue(result, off1, a.inputData);
}
a.ShowDialog();
正如错误消息所述,您无法关闭窗口,然后再次打开它 您可以通过调用
hide()
方法隐藏窗口,然后通过调用Show()
方法再次显示窗口,而不是关闭窗口
但是由于ShowDialog()
方法在窗口关闭之前不会返回,因此这对于对话框窗口不起作用。如果您需要一个模态窗口,那么您必须创建一个新的窗口实例并打开这个实例。但这不应该是个问题
因此,我猜您的问题的答案是否定的。您无法重新打开已关闭的对话框窗口。正如错误消息所述,您无法关闭窗口,然后再次打开它 您可以通过调用
hide()
方法隐藏窗口,然后通过调用Show()
方法再次显示窗口,而不是关闭窗口
但是由于ShowDialog()
方法在窗口关闭之前不会返回,因此这对于对话框窗口不起作用。如果您需要一个模态窗口,那么您必须创建一个新的窗口实例并打开这个实例。但这不应该是个问题
所以我想你的问题的答案是否定的。你不能重新打开一个关闭的对话框窗口。对话框必须是模态的吗?为什么不将数据/结果存储在ViewModel中,只需创建对话框的新实例并将其指向同一个ViewModel实例?对话框必须是模态的吗?为什么不将数据/结果存储在ViewModel中,只需创建对话框的新实例并将其指向同一个ViewModel实例?