Как вывести окно поверх всех окон в Windows?

237
28 января 2020, 14:20

Нужно вывести окно поверх всех окон, для эффекта водяного знака. Возможно ли это сделать с помощью WPF без использования WinApi?

Answer 1

У окна WPF есть специальное свойство Topmost. Его нужно установить в true:

<Window x:Class="MySolution.MyProj.MainWindow"        
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MySolution.MyProj"
        Title="Sample" 
        Height="350" 
        Width="525"
        Topmost="True"> <!-- Вот тут -->
    <Grid>
    </Grid>
</Window>

UPD. Не сразу понял, чего хотел добиться автор. Для того, чтобы сделать некоторое подобие "водяного знака" лучше использовать Image, а не окно.

Пусть наш водяной знак будет котиком. Думаю, все любят котиков :)

Изображение, с которым мы будем работать: 1.jpg

А возможно ли сделать окно некликабельным? Чтобы можно было взаимодействовать с объектами за ним

Это возможно для любого UIElement. Для этого нам понадобится свойство IsHitTestVisible установить в false. Ну и чтобы сделать изображение полупрозрачным, используем свойство Opacity="0.2".

Таким образом, xaml-код будет выглядеть так:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button FontSize="35" Click="Button_Click">Hello</Button>
        <Image Source="1.jpg" Stretch="Fill" IsHitTestVisible="False" Opacity="0.2"/>
    </Grid>
</Window>

Теперь мы можем кликать на кнопку, и котик нам не будет мешать это делать)

Результат работы программы:

P.S. Обработчик событий в code-behind вызывает MessageBox с сообщением Hello.

READ ALSO
Xamarin forms for desktop

Xamarin forms for desktop

Нужно разработать мультиплатформенное десктопное(в будущем возможно и мобила) приложениеВыбрал Xamarin Forms, он только для мобильных приложений?...

201
Сортировка списка из внешнего файла С# [закрыт]

Сортировка списка из внешнего файла С# [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

190
Как построить график

Как построить график

Подскажите пожалуйста, как построить график следующего типа

171
Получить содержимое li при помощи xpath

Получить содержимое li при помощи xpath

Есть следующий кусок html

198