1

我有一个应用程序。如果应用程序在一定时间内没有被使用,它应该隐藏。当应用程序被隐藏并且我们将鼠标悬停在图标上时,它应该被恢复。

我怎样才能做到这一点?提前致谢。

4

3 回答 3

2

您必须在应用程序中定义一个计时器,该计时器将计算鼠标不在窗体/窗口上的时间。然后只需隐藏您的应用程序。

下载WPF NotifyIcon 并处理 MouseOver 事件,这将显示 Form/Window

编辑:

如果您不需要将应用程序最小化到托盘并隐藏窗口以将其保留在桌面上 -> 使用相同的算法,但不隐藏窗口,只需将透明度设置为 0% 或 10%。当鼠标悬停时 - 将透明度设置为 100%。

于 2012-10-18T09:49:47.747 回答
1

就像 JesseJames 说的,使用计时器来测量应用程序的非活动时间,并在一段时间后将其隐藏。当鼠标悬停在 NotifyIcon 上时重新激活它。这是一个完成这项工作的示例WindowsForms解决方案:

private Timer _timer;
private int _ticks;

public Form1()
{
    _timer = new Timer { Interval = 1000, Enabled = true };
    _timer.Tick += TimerTick;

    Activated += Form1_Activated;
    MouseMove += Form1_MouseMove;
    //notifyIcon1 is an icon set through the designer
    notifyIcon1.MouseMove += NotifyIcon1MouseMove;
}

protected void TimerTick(object sender, EventArgs e)
{
    //After 5 seconds the app will be hidden
    if (_ticks++ == 5)
    {
        WindowState = FormWindowState.Minimized;
        Hide();
        _timer.Stop();
        _ticks = 0;
    }
}

protected void NotifyIcon1MouseMove(object sender, MouseEventArgs e)
{
    WindowState = FormWindowState.Normal;
    Show();
    _ticks = 0;
    _timer.Start();
}

protected void Form1_MouseMove(object sender, MouseEventArgs e)
{
    _ticks = 0;
}

也许可能存在一个更清洁的解决方案,我不知道,但它会让你上路。WPF 的原理相同,只是代码略有不同。希望这可以帮助!

于 2012-10-18T10:25:41.643 回答
0

要查看用户是否进行了任何输入,您可以使用类似的方法。要让您的应用程序再次可见,您需要一种方法来获取全局鼠标和键盘输入,为此您可以使用挂钩,您可以在此处找到一个解决方案。如果钩子被触发,它真的只取决于你使用什么样的 UI,但调用特定的hideshow方法就足够了。

于 2012-10-18T09:50:36.023 回答