Как добавить всплывающее окно в моем стиле? - PullRequest
10 голосов
/ 20 января 2009

Я создал приложение, которое запускается на панели задач. Когда пользователь щелкает по приложению, оно всплывает и т. Д. Мне бы хотелось, чтобы функциональность была аналогична функциональности в MSN, когда один из моих друзей входит в систему. Очевидно, это называется всплывающим окном? По сути, я хочу, чтобы каждые 20 минут всплывало что-то из приложения на панели задач.

Мое существующее приложение на основе winforms написано на C # с .net 3.5

Ответы [ 5 ]

23 голосов
/ 20 января 2009

Это довольно просто. Вам просто нужно установить окно за пределами экрана и анимировать его положение, пока оно не станет полностью видимым. Вот пример кода:

public partial class Form1 : Form
{
    private Timer timer;
    private int startPosX;
    private int startPosY;

    public Form1()
    {
        InitializeComponent();
        // We want our window to be the top most
        TopMost = true;
        // Pop doesn't need to be shown in task bar
        ShowInTaskbar = false;
        // Create and run timer for animation
        timer = new Timer();
        timer.Interval = 50;
        timer.Tick += timer_Tick;
    }

    protected override void OnLoad(EventArgs e)
    {
        // Move window out of screen
        startPosX = Screen.PrimaryScreen.WorkingArea.Width - Width;
        startPosY = Screen.PrimaryScreen.WorkingArea.Height;
        SetDesktopLocation(startPosX, startPosY);
        base.OnLoad(e);
        // Begin animation
        timer.Start();
    }

    void timer_Tick(object sender, EventArgs e)
    {
        //Lift window by 5 pixels
        startPosY -= 5; 
        //If window is fully visible stop the timer
        if (startPosY < Screen.PrimaryScreen.WorkingArea.Height - Height)
            timer.Stop();
        else
           SetDesktopLocation(startPosX, startPosY);
    }
}
4 голосов
/ 20 января 2009

В Win32 есть поддержка уведомлений (я не программист .net), с некоторыми полезными свойствами, как объясняет старая новая вещь .

Существует также системная семафора, которую вы должны заблокировать, чтобы предотвратить одновременное появление более одного всплывающего окна из любого приложения.

Есть пара страниц о семафоре тостов в msdn - семафора тостов и в более широком контексте удобства использования Я также натолкнулся на пример примера кода , чтобы использовать Api-шар из C # во время просмотра, но не могу ручаться за это.

2 голосов
/ 25 июля 2014

Есть также уведомления о тостах в стиле Windows 8:

http://code.msdn.microsoft.com/windowsapps/Toast-notifications-sample-52eeba29

0 голосов
/ 10 ноября 2017

Для настраиваемых и более качественных уведомлений ..

Проверьте эту ссылку ..

0 голосов
/ 17 апреля 2010

Вы перемещаете форму с экрана вправо, а затем поднимаете ее. Это никогда бы не поднялось на рабочий стол. Ось X направо и налево, ось Y направлена ​​вверх и вниз. Добавление к оси X заставляет его двигаться дальше вправо, а добавление к оси Y заставляет двигаться дальше вниз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...