日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

关于捕获键盘信息的processDialogkey方法

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于捕获键盘信息的processDialogkey方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在一些控件里的keydown方法,沒有辦法捕獲所有的按鍵消息

比如自己寫一個窗體控件庫,繼承了UserControl

但是沒有辦法捕獲一些鍵,比如方向鍵等

所以必須重載 processDialogkey 方法

processDialogkey 的描述 在msdn中是這樣的

?

在消息預處理過程中調用此方法,以處理對話框字符,比如 Tab、Return、Esc 和箭頭鍵。只有當?IsInputKey?方法指示控件未在處理該鍵時,才調用此方法。ProcessDialogKey?方法只是將字符發送給父級的ProcessDialogKey?方法,或者,在該控件沒有父級的情況下返回?false。Form?類重寫此方法來執行對話框鍵的實際處理。僅當控件承載在 Windows 窗體應用程序中或充當 ActiveX 控件時,才調用此方法。

給繼承者的說明?在派生類中重寫?ProcessDialogKey?方法時,控件應返回?true?以指示它已處理該鍵。對于未由該控件處理的鍵,應返回調用基類的?ProcessDialogChar?方法所得的結果。控件很少需要重寫此方法(即使有的話)。

?

它的返回值表示

返回值

如果鍵已由控件處理,則為?true;否則為?false

?

所以想捕獲方向鍵 要加上如下重載方法

?

protected override bool ProcessDialogKey(Keys keyData)
??????? {
??????????? if (keyData == Keys.Up || keyData == Keys.Down || keyData == Keys.Left || keyData == Keys.Right)
??????????????? return false;
??????????? else
??????????????? return base.ProcessDialogKey(keyData);
??????? }

?

在keydown里就能接收到方向鍵的信息了

?

其實,在ProcessDialogKey重寫的時候,就可以做信息處理的操作了

而不必再keydown方法里寫

?

這樣也可以

namespace writing
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == (Keys.Insert | Keys.Shift))
{
IDataObject data = Clipboard.GetDataObject();
string text = (string)data.GetData(DataFormats.UnicodeText);
MessageBox.Show(text);
}
return base.ProcessDialogKey(keyData);
}
}
}

轉載于:https://www.cnblogs.com/1175429393wljblog/p/5106500.html

總結

以上是生活随笔為你收集整理的关于捕获键盘信息的processDialogkey方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。