Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ALT/TAB离开和返回后,并非所有应用程序窗口都会显示_C#_Wpf_Vb.net - Fatal编程技术网

C# 使用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

当我的应用程序显示主窗口时,再加上一个使用ShowDialog打开的较小的模式窗口,我的ALT/TAB有问题。 当我使用ALT/TAB转到另一个应用程序,然后返回到我的应用程序时,只有模式窗口显示,主窗口已消失。这只是一个光学的东西。没有功能问题。主窗口的ShowInTaskbar=False,因为我不希望用户能够使用ALT/TAB将非活动主窗口置于前面。
有人知道这个问题的解决方案吗?

我制作了一个非常简单的示例:

在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;