c# – WPF更改窗口模态状态
发布时间:2020-12-15 22:11:26 所属栏目:百科 来源:网络整理
导读:在 WPF中,是否可以将窗口从模态更改为非模态?这意味着,我打开窗口… ShowDialog();,但后来想切换状态(比如打开窗口…… Show();. 解决方法 假设您想要从“主”窗口将窗口切换到非模态,您可以执行类似这样的操作,使得Window1在5秒后变为非模态. 这种方法的缺
在
WPF中,是否可以将窗口从模态更改为非模态?这意味着,我打开窗口… ShowDialog();,但后来想切换状态(比如打开窗口…… Show();.
解决方法
假设您想要从“主”窗口将窗口切换到非模态,您可以执行类似这样的操作,使得Window1在5秒后变为非模态.
这种方法的缺点是对话框会闪烁. private Window1 myWindow = new Window1(); private void MyButton_Click(object sender,RoutedEventArgs e) { // Using a timer to simulate something happening 5 seconds later that would cause dialog state to change DispatcherTimer dispatcherTimer = new DispatcherTimer(); dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); dispatcherTimer.Interval = new TimeSpan(0,5); dispatcherTimer.Start(); // The following line will block until you switch the dialog from modal to non-modal myWindow.ShowDialog(); } private void dispatcherTimer_Tick(object sender,EventArgs e) { (sender as DispatcherTimer).Stop(); myWindow.Hide(); myWindow.Show(); } 如果你想要从窗口本身将窗口切换到非模态,那么调用Hide()后跟Show()将完成同样的事情(再次使用闪烁) private void SwitchToModelessButton_Click(object sender,RoutedEventArgs e) { this.Hide(); this.Show(); } 值得注意的是,当您进行此切换时,将对ShowDialog()的“主”窗口调用返回. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |