比如我現在有一個form1,上面有有一個label。我現在希望任何時候(包括焦點不在form1時)我滾動一下滑鼠滾輪,label上寫的數字都+1,請問這個具體怎么寫呢,似乎需要鉤子?麻煩各位大大了
uj5u.com熱心網友回復:
其實就是實作chrome類似功能唄-焦點不在,滾輪仍然可以控制頁面滾動說實話除了運用鉤子和句柄相關的東西,我也不知道其他思路,學習一下
uj5u.com熱心網友回復:
好像現在大部分應用都實作了無焦點情況滾輪控制頁面滾動的功能哦不知道是用的什么寶貝
uj5u.com熱心網友回復:
焦點不在視窗,滾輪滾動時視窗的頁面仍然能滾動?
我怎么從來沒見到過這樣的 chrome?
uj5u.com熱心網友回復:
聽你這么一說難道是因為作業系統的原因嗎,我用的是win10現在好像大部分軟體都實作了這個功能,QQ聊天窗啊,notepad++
uj5u.com熱心網友回復:
其實就是實作chrome類似功能唄-焦點不在,滾輪仍然可以控制頁面滾動
說實話除了運用鉤子和句柄相關的東西,我也不知道其他思路,學習一下
如果用鉤子應該怎么寫呢,我用鉤子實作了監聽滑鼠移動,但是滑鼠滾動就是查不到
uj5u.com熱心網友回復:
那就不用焦點事件,用mousemove事件只要滑鼠落在表單上,滾動滾輪就+1
uj5u.com熱心網友回復:
好像現在大部分應用都實作了無焦點情況滾輪控制頁面滾動的功能哦
不知道是用的什么寶貝
uj5u.com熱心網友回復:
是焦點不在,但是滑鼠移到的區域會移動或者說,前臺看world,滑鼠移到背景的瀏覽器上,不點,直接滾輪,瀏覽器內容上下滑動
uj5u.com熱心網友回復:
如何在焦點不在表單的時候監聽到滑鼠滾輪的操作呢
這是你的問題和你的邏輯。
label不lable,瀏覽器不瀏覽器,顯示不顯示不是你問題的邏輯。
so:你們到底在討論啥??
1.nuget安裝Gma.System.MouseKeyHook (我不想費勁討論什么hook,程式員應該努力把精力放在邏輯上,避免陷入到那些低級無趣的技術爭論上,如果想研究他到底怎么hook的,他的源代碼在那里,自己研究)
2.代碼
public partial class Form2 : Form,INotifyPropertyChanged
{
private string _mytext;
private int _myvalue;
public Form2()
{
InitializeComponent();
}
public int myvalue
{
get => _myvalue;
set
{
if (value == _myvalue) return;
_myvalue = value;
OnPropertyChanged();
}
}
private void Form2_Load(object sender, EventArgs e)
{
var hook = Hook.GlobalEvents();
hook.MouseWheel += Hook_MouseWheel;
this.label1.DataBindings.Add(nameof(label1.Text), this, nameof(this.myvalue));
}
private void Hook_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta > 0)
{
this.myvalue++;
}
else
{
myvalue--;
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
uj5u.com熱心網友回復:
焦不焦點沒關系,只要滑鼠坐標在表單上,就可以了uj5u.com熱心網友回復:
這個功能應該是由windows提供.比如win10的滑鼠設定中就有這個功能,而且默認應該是開啟的.
win7怎么辦? 說服一下換win10唄.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/11496.html
標籤:C#
