我想在空閒時間後隱藏鼠標光標,當我移動鼠標時它會顯示出來。我試圖使用一個計時器,但它不能很好地工作。有誰能夠幫助我?請!閒置時間後隱藏鼠標光標
11
A
回答
10
下面是如何做到這一點的人爲的例子。你可能有一些失蹤的邏輯被重寫光標的可見性:
public partial class Form1 : Form
{
public TimeSpan TimeoutToHide { get; private set; }
public DateTime LastMouseMove { get; private set; }
public bool IsHidden { get; private set; }
public Form1()
{
InitializeComponent();
TimeoutToHide = TimeSpan.FromSeconds(5);
this.MouseMove += new MouseEventHandler(Form1_MouseMove);
}
void Form1_MouseMove(object sender, MouseEventArgs e)
{
LastMouseMove = DateTime.Now;
if (IsHidden)
{
Cursor.Show();
IsHidden = false;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
TimeSpan elaped = DateTime.Now - LastMouseMove;
if (elaped >= TimeoutToHide && !IsHidden)
{
Cursor.Hide();
IsHidden = true;
}
}
}
+0
我找不到Cursor的`Cursor.Hide`類型。 – lindexi 2017-07-18 01:26:46
21
如果您正在使用的WinForms,只會在Windows機器上部署那麼它很容易使用user32 GetLastInputInfo
處理鼠標和鍵盤空轉。
public static class User32Interop
{
public static TimeSpan GetLastInput()
{
var plii = new LASTINPUTINFO();
plii.cbSize = (uint)Marshal.SizeOf(plii);
if (GetLastInputInfo(ref plii))
return TimeSpan.FromMilliseconds(Environment.TickCount - plii.dwTime);
else
throw new Win32Exception(Marshal.GetLastWin32Error());
}
[DllImport("user32.dll", SetLastError = true)]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
}
,然後在Form
public partial class MyForm : Form
{
Timer activityTimer = new Timer();
TimeSpan activityThreshold = TimeSpan.FromMinutes(2);
bool cursorHidden = false;
public Form1()
{
InitializeComponent();
activityTimer.Tick += activityWorker_Tick;
activityTimer.Interval = 100;
activityTimer.Enabled = true;
}
void activityWorker_Tick(object sender, EventArgs e)
{
bool shouldHide = User32Interop.GetLastInput() > activityThreshold;
if (cursorHidden != shouldHide)
{
if (shouldHide)
Cursor.Hide();
else
Cursor.Show();
cursorHidden = shouldHide;
}
}
}
+0
一個優雅的解決方案,謝謝 – frameworkninja 2009-10-28 12:19:37
3
需要考慮Environment.Tickcount是消極的:
public static class User32Interop
{
public static TimeSpan GetLastInput()
{
var plii = new LASTINPUTINFO();
plii.cbSize = (uint)Marshal.SizeOf(plii);
if (GetLastInputInfo(ref plii))
{
int idleTime = unchecked(Environment.TickCount - (int)plii.dwTime);
return TimeSpan.FromMilliseconds(idleTime);
}
else
throw new Win32Exception(Marshal.GetLastWin32Error());
}
[DllImport("user32.dll", SetLastError = true)]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
}
相關問題
- 1. JavaFX設置鼠標閒置時隱藏
- 2. 空閒時隱藏光標
- 3. 空閒時使用JavaScript隱藏鼠標光標
- 4. 在空閒時間後隱藏我的鼠標光標,當我移動鼠標時它會顯示出來
- 5. 閒置時間後隱藏鼠標光標和StackPanel Windows 8.1 - 通用應用程序
- 6. Mediaelement JS - 當鼠標不移動時隱藏鼠標光標
- 7. 隱藏鼠標光標與glfw
- 8. 隱藏光標/變形鼠標(SDL 1.3)
- 9. 跨瀏覽器隱藏鼠標光標
- 10. 如何隱藏鼠標光標?
- 11. 如何用jquery隱藏鼠標光標
- 12. 如何防止在調用CComboBox :: ShowDropDown後隱藏鼠標光標?
- 13. 隱藏光標
- 14. 在多屏幕設置中隱藏鼠標光標
- 15. 如何在Visual Studio 2010中輸入時隱藏鼠標光標?
- 16. 鼠標空閒時鼠標懸停
- 17. NSSecureTextField隱藏光標
- 18. Flowplayer隱藏光標
- 19. 更改光標隱藏光標
- 20. Qt鼠標光標重置
- 21. 從鼠標光標位置
- 22. 在Xul或JavaScript中,有沒有辦法隱藏鼠標光標?
- 23. Kivy:在桌面上隱藏鼠標光標
- 24. 在Opera 10 Kiosk模式下隱藏鼠標光標
- 25. 側欄隱藏/顯示按鈕,跟隨光標鼠標?
- 26. 在HTML5畫布內隱藏鼠標光標Javascript
- 27. 如何在java applet中隱藏鼠標光標?
- 28. 網絡瀏覽器:隱藏鼠標光標
- 29. 更改\隱藏鼠標光標在插件上
- 30. 取消隱藏光標滯後
什麼樣的技術? Winforms,WPF,silverlight,ASP.Net – 2009-04-13 19:02:18