我有一個SplitPanel裏面的圖像。我設置面板的AutoScroll,因此如果圖片不適合面板,用戶可以使用鼠標滾動。現在我想按ctrl + scroll縮放圖像。它可以通過面板的MouseWheel事件完成。問題是:如何禁止按下ctrl時滾動?我嘗試使用HandledMouseEventArgs.Handled
,但它似乎不工作。禁用滾動條件
Q
禁用滾動條件
0
A
回答
2
你必須抓住WM_MOUSEWHEEL
信息發送到您的Panel
:
public class CustomPanel : Panel {
public bool ScrollDisabled { get;set;}
protected override void WndProc(ref Message m){
if(m.Msg == 0x20a && ScrollDisabled) return; //WM_MOUSEWHEEL = 0x20a
//if(m.Msg == 0x20a && ModifierKeys == Keys.Control) return; <--- or do this directly.
base.WndProc(ref m);
}
}
我忘了,你的面板停靠在你的SplitContainer
裏面,不能把它分配給一個新的實例。因此,這裏是解決方案:
public class Form1 : Form {
public Form1(){
InitializeComponent();
//Suppose you want to disable scroll in Panel1 of your SplitContainer when Control key is pressed
new PanelWndProc().AssignHandle(splitContainer1.Panel1.Handle);
}
public class PanelWndProc : NativeWindow
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x20a && Control.ModifierKeys == Keys.Control) return;
base.WndProc(ref m);
}
}
}
0
我想你將不得不實施KeyDown
以及KeyUp
事件,並檢查是否已按下/釋放CTRL
。
一旦你有,你可以在你的splitpanel禁用Autoscroll
財產
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control)
{
splitpanel.AutoScroll = false;
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.Control)
{
splitpanel.AutoScroll = true;
}
}
相關問題
- 1. 禁用QGraphicsWebView滾動條
- 2. WebView禁用滾動條
- 3. 禁用WPF WebBrowser滾動條
- 4. 禁用Ultrawingrd控件中的滾動條
- 5. 如何禁用GridView中的ListView滾動條和滾動條
- 6. 水平滾動條和禁用垂直滾動條
- 7. 動畫時禁用滾動條
- 8. 禁用UITableViewController的閃動滾動條?
- 9. 禁用自動切換滾動條位置(禁用滾動到主動控制)
- 10. 禁用滾動條和鼠標滾輪但不滾動到
- 11. 使用JavaScript禁用水平滾動條
- 12. 禁用TableLayoutPanel時啓用滾動條
- 13. 禁用滾動條並啓用滾動鼠標滾輪和僅滾動
- 14. ASP.NET條款和條件,禁用按鈕直到向下滾動
- 15. 有條件地禁用滾動條沒有javascript
- 16. 禁用或隱藏webBrowser滾動條
- 17. 如何禁用JavaScript的滾動條?
- 18. FLEX - 禁用滾動條的mousescroll?
- 19. 禁用滾動條,而splshpage裝載
- 20. 如何禁用skrollr中的滾動條
- 21. 完全禁用柵格滾動條
- 22. 如何禁用ScrolledForm中的滾動條?
- 23. 禁用JavaFX TableView的垂直滾動條
- 24. MX:文本垂直滾動條禁用
- 25. NSScrollView滾動條不響應或禁用
- 26. 如何禁用頁面的滾動條?
- 27. JavaFX:禁用TableView的水平滾動條
- 28. 如何禁用Jtextarea的滾動條
- 29. 禁用iPad上的水平滾動條
- 30. Bootstrap:如何禁用垂直滾動條?
謝謝。這種方法確實有效。但包括創建一個新班級。有沒有辦法使用事件做到這一點? – SkyterX
@SkyterX不,要捕獲WM_MOUSEWHEEL消息,就必須創建一個繼承自NativeWindow的類,如我在代碼中所示。我覺得這不是很不方便。所有內置事件都不適合您的目的。 –