![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 wilson ![]()
![]() |
類似 我們在看windows Folder 太多檔案的話 不用一起按 大概間隔0.5s key入 A+ S +D asd開頭的檔案 就會被selected 可見windows Folder 有抓到 "ASD" 而且 又不強制 一起KEY 一樣的法想不太到 目前只有替代方案... 第一個方法 是 KeyEventArgs 找出 e.keysCode == keys.A && e.keysCode == keys.S 但必須 同時觸發KeyEvent 如果輸入 A+S+D 就變成其中一個吃不到 而且所有按扭又要同時按壓 很煩 第二的方法 是網路找的 但是以下方法是從win基底 取keyboard 所以固定都是按照編碼順序 取得值 意思就是假設 A + S + D 鍵入 順序就會亂 變成ADS 只能達到我的需求的一半 =================== [DllImport("user32.dll")] static extern short GetAsyncKeyState(Keys vKey); public Form1() { InitializeComponent(); this.KeyDown += new KeyEventHandler(this.ShowKeyState); this.KeyPreview = true; } private void ShowKeyState(object sender, KeyEventArgs e) { string result = ""; foreach (Keys k in Enum.GetValues(typeof(Keys))) { if (GetAsyncKeyState(k) != 0) result += k.ToString(); } this.label1.Text = result; } ================== 第三個方法 是智障方法 刻一個隱藏的 textBox 紀錄Form KeyEventArgs 所有值 在加個 timer 超過3秒沒輸入 自動清空 但是 這樣是考慮 這個Form 沒有其他 KeyEventArg會衝突 finally 各位 有沒有類似的經驗 或是 更好的方法 可以代替???? 懇請賜教 m_ _m |
1樓 |
我想到的是可以用一個string之類的變數,
在KeyEventArg觸發的時候改變string變數值, 也可以另外用一個DateTime的變數, KeyEventArg觸發的時候判斷DateTime是否過期, 如果過期就將string清空再加入值。
本篇文章回覆於2017-07-20 23:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
wilson ![]() |
恩 感謝 不過1F 其實就類似方法三了
不過我還是想找找有沒有第二種方法 符合需求
本篇文章回覆於2017-07-21 09:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |