gpt4 book ai didi

c# - WPF 改变窗口模式状态

转载 作者:行者123 更新时间:2023-11-30 12:44:27 24 4
gpt4 key购买 nike

是否可以在 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, 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() 的“主”窗口调用将返回。

关于c# - WPF 改变窗口模式状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28450712/

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