visual studio-如何自动最小化我的Windows窗体应用程序(C#)

本文关键字:应用程序 窗体 Windows 我的 studio- 何自动 最小化 visual | 更新日期: 2023-09-27 17:57:31

我正在创建一个基本的Windows窗体应用程序。如果我运行我的项目(程序启动),当用户不与我的表单交互时,我如何将表单设置为自动最小化?

例如,当你全屏观看一些youtube视频时,它会显示条形播放器,当用户不在播放器内做任何事情或移动任何东西时,条形播放器会自动隐藏。

那么,我该如何创建类似的东西呢?它是怎么做到的?

visual studio-如何自动最小化我的Windows窗体应用程序(C#)

这里有一个简单的例子。

通过将属性WindowState设置为FormWindowState.Minimized,可以最小化"自"。

若要在Form最小化时处理时间,请使用Timer。On Tick事件将计时器的当前时间和您定义的时间进行比较。在用户中断(输入事件如MouseMove、MouseClick、KeyPress,或者您可以只选择其中的一些)时,将时间重置为0。

public partial class Form1 : Form
{
    System.Windows.Forms.Timer timer;
    int milliseconds;
    const int TIME_TO_MINIMIZE = 1000;
    public Form1()
    {
        InitializeComponent();
        this.MouseMove += new MouseEventHandler(InputAction);
        this.MouseClick += new MouseEventHandler(InputAction);
        this.KeyPress += new KeyPressEventHandler(InputAction);
        milliseconds = 0;
        timer = new System.Windows.Forms.Timer();
        timer.Interval = 100;
        timer.Tick += new EventHandler(timer_Tick);
        timer.Start();
    }
    private void timer_Tick(object sender, EventArgs e)
    {
        milliseconds += 100;
        if (milliseconds >= TIME_TO_MINIMIZE)
        {
            this.WindowState = FormWindowState.Minimized;
            milliseconds = 0;
        }
    }
    private void InputAction(object sender, EventArgs e)
    {
        milliseconds = 0;
    }
}

您可以定义一个计时器,例如在15秒后调用隐藏操作。然后,您将MouseMove、MouseClick和KeyPressed的事件处理程序附加到表单中。每次发生此类事件时,它都会重置计时器。

您可以通过以下方式完成:

public partial class frmTimer : Form
{
    System.Windows.Forms.Timer timer;
    public frmTimer()
    {
        InitializeComponent();
        timer = new Timer();
        timer.Enabled = true;
        timer.Interval = 10 * 1000;
        timer.Tick += Timer_Tick;
        timer.Start();
        // attach your events on which you want to reset your events
        this.MouseMove += FrmTimer_MouseMove;
        this.MouseDown += FrmTimer_MouseDown;
        this.KeyDown += FrmTimer_KeyDown;
    }
    private void FrmTimer_KeyDown(object sender, KeyEventArgs e)
    {
        timer.Stop();
        timer.Start();
    }
    private void FrmTimer_MouseDown(object sender, MouseEventArgs e)
    {
        timer.Stop();
        timer.Start();
    }
    private void FrmTimer_MouseMove(object sender, MouseEventArgs e)
    {
        timer.Stop();
        timer.Start();
    }
    private void Timer_Tick(object sender, EventArgs e)
    {
        if (this.WindowState != FormWindowState.Minimized)
            this.WindowState = FormWindowState.Minimized;
    }
}

我希望这对你有帮助