【发布时间】:2009-07-13 11:38:16
【问题描述】:
我在 vb.net 中有一个看起来像这样的小表格
http://img11.imageshack.us/img11/5651/samplennk.jpg
你知道如何设置windows任务栏在鼠标位置一直在底部时出现和消失吗?当鼠标位于屏幕左上角时,我想对我的表单做同样的事情。
或者你可以向我建议一种不同的方式来做到这一点。用户可能只需要在使用期间设置这些跟踪栏几次。
【问题讨论】:
我在 vb.net 中有一个看起来像这样的小表格
http://img11.imageshack.us/img11/5651/samplennk.jpg
你知道如何设置windows任务栏在鼠标位置一直在底部时出现和消失吗?当鼠标位于屏幕左上角时,我想对我的表单做同样的事情。
或者你可以向我建议一种不同的方式来做到这一点。用户可能只需要在使用期间设置这些跟踪栏几次。
【问题讨论】:
您可以只使用一个线程来检查 Cursor.Position,当它为 0,0 时,表单就会出现。
这有点粗略,但是将初始窗体窗口状态设置为最小化。
public partial class Form1 : Form
{
private delegate void ShowFormDel();
private readonly ShowFormDel _ShowFormDel;
private bool _CheckForMouse;
public Form1()
{
InitializeComponent();
_CheckForMouse = true;
_ShowFormDel = ShowForm;
Thread x = new Thread(CheckMouseThread);
x.Start();
}
public void CheckMouseThread()
{
while (_CheckForMouse)
{
if (Cursor.Position.X < 5 && Cursor.Position.Y < 5)
{
this.Invoke(_ShowFormDel);
}
Thread.Sleep(1000);
}
}
private void ShowForm()
{
this.Location = new Point(0, 0);
this.WindowState = FormWindowState.Normal;
this.Activate();
this.Visible = true;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
_CheckForMouse = false;
}
private void Form1_MouseLeave(object sender, System.EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
}
【讨论】: