none
"отрыв" дочернего окна от приложения. RRS feed

  • Вопрос

  • Приложение WPF.

    Окно имеет параметры:

    WindowStyle="None"  WindowState="Maximized" AllowsTransparency="True" ResizeMode="NoResize"  WindowStartupLocation="CenterScreen"...

     

    Другое окно определено в классе этого окна:

    public partial class MyWork : Window

    {

    ………

        public trainer.myWin MyWin = null;

    ……

    }

     

    В нужный момент создается это другое окно:

    MyWin = new myWin ();

    myWin.Owner = this;

    myWin.Show();

     

    Его параметры: WindowStyle="None" AllowsTransparency="True" ShowInTaskbar="False" Background="Transparent"  Topmost="True"  

     

     

    Все было бы прекрасно, но часто бывает так, что это самое «другое», я бы сказал – «дочернее» окно отрывается от основного и оказывается где-то в другом приложении, тоже работающем в это время на ПК. Оно находится, то есть его можно обнаружить переключением клавиш Alt-Tab. Понимаю, и не только я, что так нехорошо. Бывает так, что простой клик мышкой по основному окну возвращает "дочернее" на место. Но все-таки надо что-то делать. Подскажите, как его привязать покрепче к «родительскому» окну? Очень важно.

     

    27 октября 2011 г. 8:42

Все ответы

  • Здравствуйте,

    Странно что так происходит, такого быть не должно. Попробовал у себя - окно всегда появлялось перед родительским:

    Главное окно:

    <Window x:Class="WpfApplication3.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" 
            WindowStyle="None" WindowState="Maximized" AllowsTransparency="True" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
        <Grid>
            <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="128,110,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        </Grid>
    </Window>
    
    

    Обработчик кнопки:

            private void button1_Click(object sender, RoutedEventArgs e)
            {
                Window1 window1 = new Window1();
                window1.Owner = this;
                window1.Show();
            }
    

    Дочернее окно:

    <Window x:Class="WpfApplication3.Window1"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="Window1" Height="300" Width="300"
            WindowStyle="None" AllowsTransparency="True" ShowInTaskbar="False" Background="Transparent" Topmost="True">
        <Grid>
            <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="100,100,0,0" Name="Close" VerticalAlignment="Top" Width="75" Click="Close_Click" />
        </Grid>
    </Window>
    
    

    Обработчик кнопки:

            private void Close_Click(object sender, RoutedEventArgs e)
            {
                this.Close();
            }
    

    Попробуйте, если будет также окно открываться неактивно, вызвать метод window1.Activate(); после вызова Show().


    Для связи [mail]
    28 октября 2011 г. 7:07
  • Попробую и так, но дело в том, что исчезает-то окно не вначале своего должного появления. Оно появляется, а потом, в процессе работы, в какой-то прекрасный момент, может внезапно "исчезнуть". Клавиши Alt-Tab помогают его вернуть, но ненадолго.

     Заметил, что этот эффект проявляется  после следующих действий. Папка, в которой лежит приложение, доступна и для других пользователей в локальной сети. Если кто-то поработал с ним (с приложением) со своего ПК, то потом, когда я сам его запускаю на своем ПК, такие фокусы и начинаются. В принципе так быть не должно, но так есть. И продолжается это до тех пор, пока не перезагрузишь операционную систему.  У меня WidowsXP SP3. Framework 4.0. Может что-то в памяти остается, какой-либо "мусор"?

     

    28 октября 2011 г. 14:09
  • Хочу добавить к сказанному. Помимо того, что "отвязывается" созданное окно, пропадают и ToolTip. То есть, после работы приложения через сеть с другого ПК, всплывающие подсказки не всплывают! Их не видно. То есть они оказываются где-то  под окном. Беда просто какая-то.

    1 ноября 2011 г. 15:09