C# 使用ALT/TAB离开和返回后,并非所有应用程序窗口都会显示
当我的应用程序显示主窗口时,再加上一个使用ShowDialog打开的较小的模式窗口,我的ALT/TAB有问题。 当我使用ALT/TAB转到另一个应用程序,然后返回到我的应用程序时,只有模式窗口显示,主窗口已消失。这只是一个光学的东西。没有功能问题。主窗口的ShowInTaskbar=False,因为我不希望用户能够使用ALT/TAB将非活动主窗口置于前面。C# 使用ALT/TAB离开和返回后,并非所有应用程序窗口都会显示,c#,wpf,vb.net,C#,Wpf,Vb.net,当我的应用程序显示主窗口时,再加上一个使用ShowDialog打开的较小的模式窗口,我的ALT/TAB有问题。 当我使用ALT/TAB转到另一个应用程序,然后返回到我的应用程序时,只有模式窗口显示,主窗口已消失。这只是一个光学的东西。没有功能问题。主窗口的ShowInTaskbar=False,因为我不希望用户能够使用ALT/TAB将非活动主窗口置于前面。 有人知道这个问题的解决方案吗?我制作了一个非常简单的示例: 在MainWindow.xaml中 <Window x:Class="Sa
有人知道这个问题的解决方案吗?我制作了一个非常简单的示例: 在MainWindow.xaml中
<Window x:Class="SampleDialog.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Show Dialog" Click="ButtonBase_OnClick"></Button>
</Grid>
</Window>
在Dialog.xaml中
<Window x:Class="SampleDialog.Dialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Dialog" Height="300" Width="300"
Activated="Dialog_OnActivated" Deactivated="Dialog_OnDeactivated">
<Grid>
</Grid>
</Window>
目的是在模式窗口上的已激活和已停用事件中处理此功能
希望能有帮助
如果您使用的是MVVM,则必须在WindowsService类上重构以处理此问题,或者使用EventToCommand方法
编辑>>>当ShowInTaskbar=False时,此选项适用于您的案例= 对话框窗口将始终位于顶部,因此您不需要ShowInTaskbar=False.tx taquion,我将尝试它我必须翻译成vb,然后尝试它,它成功了!太多了!抱歉,我没有注意到您正在使用VB,但现在我看到了VB标记。你介意把这个问题标为已回答吗?很高兴它成功了
<Window x:Class="SampleDialog.Dialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Dialog" Height="300" Width="300"
Activated="Dialog_OnActivated" Deactivated="Dialog_OnDeactivated">
<Grid>
</Grid>
</Window>
public partial class Dialog : Window
{
public Dialog()
{
InitializeComponent();
}
public Dialog(MainWindow main)
: this()
{
_main = main;
}
private void Dialog_OnActivated(object sender, EventArgs e)
{
Topmost = _main.Topmost = true;
}
private void Dialog_OnDeactivated(object sender, EventArgs e)
{
Topmost = _main.Topmost = false;
}
private readonly MainWindow _main;