每隔N分钟最大化窗口

时间:2014-01-19 22:26:23

标签: c# wpf windows timer

我正在开发一个C#桌面应用程序。我希望我的所有打开的窗口每隔5分钟弹出一次( Alt + Tab )。我在这里看了几个问题。他们建议使用计时器来实现,但是如何弹出最小化的窗口?

2 个答案:

答案 0 :(得分:2)

这是一个非常基本的例子供您使用。

  1. 首先创建计时器。

  2. 创建一个在计时器滴答时运行的函数。

  3. 然后添加一个事件以在每次滴答时运行。并将其链接到您的功能

  4. 在该功能内检查是否已有5分钟。如果是这样,最大化 窗口

    public partial class TimerForm : Form
    {
        Timer timer = new Timer();
        Label label = new Label();
    
        public TimerForm ()
        {
            InitializeComponent();
    
            timer.Tick += new EventHandler(timer_Tick); // Everytime timer ticks, timer_Tick will be called
            timer.Interval = (1000) * (1);              // Timer will tick evert second
            timer.Enabled = true;                       // Enable the timer
            timer.Start();                              // Start the timer
        }
    
        void timer_Tick(object sender, EventArgs e)
        {
              // HERE you check if five minutes have passed or whatever you like!
    
              // Then you do this on your window.
              this.WindowState = FormWindowState.Maximized;
        }
    }
    

答案 1 :(得分:0)

这是完整的解决方案

public partial class Form1 : Form
{
    int formCount = 0;
    int X = 10;
    System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

    public Form1()
    {
        InitializeComponent();

        timer.Tick += new EventHandler(timer_Tick); // Everytime timer ticks, timer_Tick will be called
        timer.Interval = (1000) * X;                // Timer will tick evert second
        timer.Enabled = true;                       // Enable the timer
        timer.Start();
    }

    void timer_Tick(object sender, EventArgs e)
    {
        FormCollection fc = new FormCollection();
        fc = Application.OpenForms;

        foreach (Form Z in fc)
        {
            X = X + 5;
            formCount++;
            if (formCount == fc.Count)
                X = 5;

            Z.TopMost = true;
            Z.WindowState = FormWindowState.Normal;
            System.Threading.Thread.Sleep(5000);
        }
    }
}