C# 从当前窗口关闭上一个窗口
在Silverlight中,我使用了一个配置文件窗口,可以选择在超链接按钮中删除当前配置文件。当用户点击超链接按钮时,它会将他们带到一个新表单以确认删除。虽然删除功能已起作用(即已从datatbase中删除配置文件),但如何在用户确认后关闭第一个窗口 这就是超链接所称的-C# 从当前窗口关闭上一个窗口,c#,silverlight,childwindow,C#,Silverlight,Childwindow,在Silverlight中,我使用了一个配置文件窗口,可以选择在超链接按钮中删除当前配置文件。当用户点击超链接按钮时,它会将他们带到一个新表单以确认删除。虽然删除功能已起作用(即已从datatbase中删除配置文件),但如何在用户确认后关闭第一个窗口 这就是超链接所称的- private void deleteProfile(object sender, RoutedEventArgs e) { deleteProfile dProfile = new deletePr
private void deleteProfile(object sender, RoutedEventArgs e)
{
deleteProfile dProfile = new deleteProfile();
dProfile.textBlock1.Text = System.Convert.ToString("Delete " + lblMsg.Content);
dProfile.Show();
}
然后从那里开始,当用户单击ok时,我想关闭超链接所在的profileForm
-
private void OKButton_Click(object sender, RoutedEventArgs e)
{
textBlock1.Text = "Profile Deleted.";
profileForm.Close();
Close();
}
但是,
dProfile
表单仅识别profileForm
当我创建它的新实例时,如何引用我正在使用的当前实例?使您自己成为删除表单上的属性。
该财产应为:IsDeleted。
当用户单击“确定”时,将其设置为True。
然后,当您返回主窗口时,读取此属性并关闭当前窗口
或者从子窗口获取结果
var viewModel = _srvLocator.GetInstance<YourViewModel>();
var inst = _srvLocator.GetInstance<IWindowManager>();
if (inst.ShowDialog(viewModel).Value)
{
Close();
}
var viewModel=\u srvLocator.GetInstance();
var inst=_srvLocator.GetInstance();
if(inst.ShowDialog(viewModel).Value)
{
Close();
}
可能还有其他方法,但您可以尝试以下方法
在子窗口中创建事件
public event EventHandler SubmitClicked;
在“确定按钮\单击”事件中
private void OKButton_Click(object sender, RoutedEventArgs e)
{
if (SubmitClicked != null)
{
SubmitClicked(this, new EventArgs());
}
}
在主窗口中执行以下操作,针对ChildWindow对象附加事件
deleteProfile.SubmitClicked += new EventHandler(deleteProfile _SubmitClicked);
然后,在这种情况下,您可以:
private void deleteProfile_SubmitClicked(object sender, EventArgs e)
{
this.Close();
}
(虽然这里不需要,但您可以使用该过程将值从子窗口传递到父窗口)出于兴趣,我在Silverlight应用程序的主页上有一个列表框,它有一个列表框,当用户选择一个项目时,打开profileForm,然后第三阶段是dProfile表单。当用户在“数据配置文件”窗体上单击“确定”时,是否可以刷新主页面上的列表框?只是说列表框与一个Web服务调用相链接。@Jambo如果我理解正确,那么请确定,在主页面上的事件中,不要调用“关闭”,而是执行例行程序刷新列表视图。@Jambo,嗯,我不确定发生了什么,您可能会在deleteProfile_SubmitClicked事件中发布一个新问题,或者查看社区中是否有人提出了一些建议