![](/img/trans.png)
[英]How make scroll follow mouse location when pictureBox is scale inside a panel windows forms c#
[英]C#: Windows Forms: Getting keystrokes in a panel/picturebox?
我正在使用Windows窗體為游戲制作關卡編輯器。 該表單有幾個下拉菜單,文本框等,用戶可以在其中鍵入信息。
我想讓CTRL + V
或CTRL + A
等命令可用於游戲世界本身,而不是文本操作。 游戲世界由Panel
包含的PictureBox
表示。
此事件處理程序不會觸發:
private System.Windows.Forms.Panel canvas;
// ...
this.canvas = new System.Windows.Forms.Panel();
// ...
this.canvas.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.canvas_PreviewKeyDown);
這樣做的首選方式是什么? panel
甚至可以接收鍵盤輸入嗎? 我想允許用戶在處理文本輸入時使用copy / paste / select-all命令,但在游戲世界中放置對象時則不允許。
從Control.CanSelect的MSDN文檔:
以下列表中的Windows窗體控件不可選,並且將為CanSelect屬性返回false值。 從這些控件派生的控件也是不可選擇的。
- 面板
- 分組框中
- 圖片框
- 進度條
- 分離器
- 標簽
- LinkLabel(當控件中沒有鏈接時)
雖然它表示從這些控件派生的控件無法獲得焦點,但您可以創建派生控件並使用SetStyle方法啟用“可選”樣式。 您還必須將TabStop屬性設置為true才能使其正常工作。
public class SelectablePanel : Panel
{
public SelectablePanel()
{
this.SetStyle(ControlStyles.Selectable, true);
this.TabStop = true;
}
}
然后使用此控件而不是普通的Panel。 您可以按預期處理PreviewKeyDown事件。
您可能希望在表單級別執行密鑰捕獲。 強烈建議從幫助編寫基礎.NET代碼的人那里閱讀:
http://blogs.msdn.com/jfoscoding/archive/2005/01/24/359334.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.