visual studio-如何自动最小化我的Windows窗体应用程序(C#)
本文关键字:应用程序 窗体 Windows 我的 studio- 何自动 最小化 visual | 更新日期: 2023-09-27 17:57:31
我正在创建一个基本的Windows窗体应用程序。如果我运行我的项目(程序启动),当用户不与我的表单交互时,我如何将表单设置为自动最小化?
例如,当你全屏观看一些youtube视频时,它会显示条形播放器,当用户不在播放器内做任何事情或移动任何东西时,条形播放器会自动隐藏。
那么,我该如何创建类似的东西呢?它是怎么做到的?
这里有一个简单的例子。
通过将属性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;
}
}
我希望这对你有帮助