簡體   English   中英

在C#Winforms中禁用Windows 10“滾動非活動窗口”

[英]Disable Windows 10 “scroll inactive windows” in C# Winforms

在Windows 10中,我有一個關於C#,Winforms和“當我將鼠標懸停在它們上時滾動非活動窗口”的問題。

我有一個流程布局面板,我動態填充自定義控件。 控件具有由鼠標滾輪控制的放大縮小功能。

當控件數超過流布局面板大小時,我得到AutoScroll = true,因此面板獲得一個垂直滾動條。 我不想用鼠標滾輪滾動面板,我希望用戶手動執行它。

在Windows 7中一切正常,但在Windows 10中,如果用戶打開“當我將鼠標懸停在它們上時滾動非活動窗口”,當鼠標懸停在控件上並且用戶使用鼠標滾輪時,控件將放大或out,但面板也滾動。

我調試了,我發現Win10甚至在表單/面板的MouseWheel事件之前滾動了面板。

如何在我的代碼中暫時禁用“Scroll inactive ..”? 或者至少禁用它的行為?

謝謝 !

我想到的唯一禁用該行為的方法是檢查窗口是TopMost還是失去焦點。 這可以通過使用form.TopMost屬性 ActivatedDeactivate事件來完成。 使用事件

 public Form1()
    {
        InitializeComponent();
        this.Deactivate += Form1_Deactivate;
        this.Activated += Form1_Activated;
    }

    private void Form1_Activated(object sender, EventArgs e)//The form gained focus
    {
        panel1.Enabled = true;
    }

    private void Form1_Deactivate(object sender, EventArgs e)// The form lost focus
    {
        panel1.Enabled = false;
    }

這些將工作得很好,但使用一些控件,它將使它們在某些操作系統上更改外觀。 如果你不介意,那很好。 如果你這樣做,你應該使用相同的概念,只有當表格失去焦點時才會禁用滾動本身,並在重新獲得時啟用它。

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM