childwindow完全关闭之后的事件是什么?

superzxf 2011-07-08 10:21:26
childwindow的closed事件触发的时候,其实窗口还显示在那里,并没有消失
我需要在childwindow完全关闭后再触发相应的操作该如何进行?
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
superzxf 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 infosys1125 的回复:]
引用 5 楼 superzxf 的回复:
搞定了,在silverlight4中增加了unload事件,silverlight3中还没有这个事件

这个样子可以么

C# code


/// <summary>
/// 显示子窗口
/// </summary>
/// <param name="sender"></param>……
[/Quote]

问题在于执行了child.Visibility = Visibility.Collapsed并不会立即生效
一定要closed处理函数退出后子窗体才关闭
sangjiaqin 2011-07-18
  • 打赏
  • 举报
回复
你可以自己定义一个
public class OpenWindowsEventArgs : EventArgs
{
public delegate void WindowsCompletedEventHandler(object sender);
}
在子窗体
public event OpenWindowsEventArgs.WindowsCompletedEventHandler WindowsCompleted;
子窗体关闭的时候调用
this.WindowsCompleted(null);

在父窗体
在实例化窗体的时候绑定关闭的事件
newWindow.WindowsCompleted += new OpenWindowsEventArgs.WindowsCompletedEventHandler(newWindow_WindowsCompleted);
然后在父窗体写上关闭的事件
void newWindow_WindowsCompleted(object sender)
{
这里可以写刷新啊或者提示什么的操作
newWindow.Close();
}
无趣 2011-07-18
  • 打赏
  • 举报
回复
嗯,3、4差不少,比如鼠标右键相关事件啥的,总之,尽量用最新版本。
安得权 2011-07-14
  • 打赏
  • 举报
回复
public MainPage()
{
InitializeComponent();
//创建一个对象
TestChild child = new TestChild();
//显示
child.Show();
//注册关闭时间
child.Closed += new EventHandler(child_Closed);
}

/// <summary>
/// 关闭窗口时,处理业务逻辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void child_Closed(object sender, EventArgs e)
{
//取得要关闭的窗体对象
TestChild child = sender as TestChild;
//判断是否点击了"确定"
if ((bool)child.DialogResult)
{
//是:处理关闭的业务逻辑
}
}
leojing 2011-07-13
  • 打赏
  • 举报
回复
路过,学习了。。。。unload
infosys1125 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 superzxf 的回复:]
搞定了,在silverlight4中增加了unload事件,silverlight3中还没有这个事件
[/Quote]
这个样子可以么

/// <summary>
/// 显示子窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ShowChild_Click(object sender, RoutedEventArgs e)
{
ChildWindow1 childWindow = new ChildWindow1();
childWindow.Show();
childWindow.Closed += new EventHandler(ch_Closed);
}

void ch_Closed(object sender, EventArgs e)
{
ChildWindow1 child = (ChildWindow1)sender;
child.Visibility = Visibility.Collapsed;
//接着处理其他事件...
}
superzxf 2011-07-10
  • 打赏
  • 举报
回复
搞定了,在silverlight4中增加了unload事件,silverlight3中还没有这个事件
superzxf 2011-07-10
  • 打赏
  • 举报
回复
好像没办法hide的,而且事件closed触发表示窗口其实已经关闭,只是前台的显示界面还没有刷新
而要等事件处理程序结束后,ui进程才会刷新
infosys1125 2011-07-09
  • 打赏
  • 举报
回复
可以在事件处理的第一行先把childwindow hidden掉么?
jv9 2011-07-09
  • 打赏
  • 举报
回复
需要对DialogResult进行判断。例如:

private void ChildWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (this.DialogResult == true &&
(this.nameBox.Text == string.Empty || this.passwordBox.Password == string.Empty))
{
e.Cancel = true;
ChildWindow cw = new ChildWindow();
cw.Content = "Please enter name and password or click Cancel.";
cw.Show();
}
}

superzxf 2011-07-09
  • 打赏
  • 举报
回复
楼上的没听明白啊
我说的是当Closed事件触发时,对应的子窗口还没有消失
比如定义了一个ChildWindow,用来显示一个资料选择对话框,当点击确定后,希望关闭选择窗口并通知父窗口
现在的问题时父窗口可以通过Closed事件知道子窗体已关闭,并触发相应的操作,可是这个操作执行的时候子窗体还显示在那里,一定要等到事件处理过程结束后,这个窗口才会消失
当Closed的处理过程很快可能看不出来,如果很慢的时候,比如需要处理几千条记录,这个时候就看出来了,点击确定后子窗口显示在那里要等一会才会消失

8,734

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧