Tôi có một ứng dụng Windows trong C# /. NET. Tôi cần thực hiện một số phím tắt để điều hướng giữa các biểu mẫu khác nhau. Làm cách nào để tạo phím tắt trong .NET?Cách tạo các phím tắt trong .NET
Trả lời
Bạn có thể sử dụng P/Gọi đến register a global hotkey on the system. Nếu bạn không muốn một cái gì đó toàn cầu, bạn luôn có thể xử lý các sự kiện KeyPress trong tất cả các biểu mẫu của bạn.
Bạn có thể xử lý các sự kiện Control.KeyPress và kiểm tra việc tổ hợp phím để làm phím tắt:
tôi giả cố gắng của bạn để thực hiện Control ?
loại các phím tắt như các bản sao cách và dán làm việc?
Bạn có thể tạo bộ xử lý chung là KeyDown
và KeyUp
mà bạn đính kèm vào từng biểu mẫu. Mỗi khi bạn nhận được KeyDown
lưu khóa trong danh sách (để giữ tài khoản và nhấn phím khác). Mỗi khi bạn thêm khóa vào danh sách, hãy kiểm tra xem danh sách của bạn có chứa bất kỳ tổ hợp phím tắt nào không. Nếu như vậy thực hiện bất kỳ mã nào bạn cần.
Đối với mỗi sự kiện KeyUp
, hãy chắc chắn bạn đang loại bỏ khỏi danh sách (bạn chỉ cần kiểm tra xem có các phím tắt trên KeyDown
bổ sung
EDIT:. Đã làm một tìm kiếm nhanh chóng và tìm thấy giải pháp này cùng thực hiện:
class KeyboardShortcuts
{
public static void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (m_keysDownList.Contains(e.Key) == false)
{
m_keysDownList.Add(e.Key);
Debug.WriteLine(e.Key.ToString() + " Down");
}
CheckForKeyCombos();
}
public static void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
m_keysDownList.Remove(e.Key);
Debug.WriteLine(e.Key.ToString() + " Up");
}
public static void CheckForKeyCombos()
{
if (m_keysDownList.Contains(System.Windows.Input.Key.LeftCtrl))
{
if (m_keysDownList.Contains(System.Windows.Input.Key.A))
{
if (m_keysDownList.Contains(System.Windows.Input.Key.C))
{
// Clear list before handeling (Dialogue boxes
// can hinder the listening for key up events, leaving
// keys in list - so clear first).
ClearKeysDownList();
// Handle Ctrl + A + C Combo
HandleCtrlACCombo();
}
}
}
}
private static void ClearKeysDownList()
{
m_keysDownList.Clear();
}
public static void HandleCtrlACCombo()
{
if (handleCtrlACComboDelegate != null)
{
handleCtrlACComboDelegate();
}
}
// Need a delegate instance for each combo
public delegate void HandleCtrlACComboDelegate();
public static HandleCtrlACComboDelegate handleCtrlACComboDelegate;
private static List<System.Windows.Input.Key> m_keysDownList = new List<System.Windows.Input.Key>();
}
Bạn có thể thấy các giải pháp đầy đủ mà điều này được trích dẫn từ here (chỉ cần cuộn xuống phía dưới vì nó là trên trang web đó ác mà chúng ta không nói tên của.
Những thứ như vậy thường được thực hiện bằng cách sử dụng móc cửa sổ. Dưới đây là một bài viết MSDN cho thấy làm thế nào để làm việc với họ:
Nếu hình thức cha mẹ của bạn có các nút hoặc menu mà người sử dụng chọn để mở các hình thức phụ, bạn có thể thêm một phím nóng rất đơn giản bằng cách thêm một dấu &
đến thuộc tính .Text.
Ví dụ: nếu bạn có nút như Options
, bạn có thể thay đổi văn bản như sau: &Options
. Làm như vậy sẽ làm cho Alt + O kích hoạt nút từ biểu mẫu gốc.
Ngoài ra nếu bạn muốn phím nóng như Ctrl + O để mở một biểu mẫu, bạn sẽ phải đăng ký sự kiện dưới hình thức chính của KeyDown
, và tìm kiếm rằng tổ hợp phím:
private void FormMain_KeyDown(object sender, KeyEventArgs e)
{
if (ModifierKeys == Keys.Control && e.KeyCode == Keys.O))
// open form
}
Lưu ý rằng bạn có thể cần phải đặt thuộc tính KeyPreview
của biểu mẫu thành True.
Cuối cùng, mục menu dải công cụ có thuộc tính ShortcutKeys
mà bạn có thể xác định trong bảng thuộc tính và VS sẽ tự động thêm mã được yêu cầu vào tệp Designer để hỗ trợ phím tắt để kích hoạt mục menu.
Bước No.1 thiết
KeyPreview = True;
Bước số 2
if (e.Alt && e.KeyCode == Keys.C)
{
//your function
}
- 1. Tắt phím tắt trợ năng trong ứng dụng .NET?
- 2. Cách tắt các phím tắt trong Hộp văn bản WPF
- 3. Làm cách nào để tắt các phím tắt trong Matplotlib?
- 4. Tắt các phím tắt IE trong các điều khiển WebBrowser
- 5. Phím tắt Pythonic cho các phím trong từ điển?
- 6. Cách tắt các phím Esc và con trỏ trong vim
- 7. Phím tắt trong WPF
- 8. Phím tắt trình tự phím tắt cho menu
- 9. Phím tắt trong iOS?
- 10. Cách thêm các phím tắt cho mã java trong eclipse
- 11. Phím tắt để tạo hàm tạo với biến (C# VS2010)
- 12. Tùy chỉnh các phím tắt Mathematica
- 13. MySQL tắt và bật các phím
- 14. Phím tắt để tạo danh sách mục đơn trong C#
- 15. Phím tắt trong WPF MVVM?
- 16. Phím tắt để tạo một phương pháp trong eclipse
- 17. Phím tắt ngắt phím AutoHotKey
- 18. Phím tắt cho các khối nhận xét/* ... */trong Xcode
- 19. Phím tắt ngoài trong bảng
- 20. Phím tắt hoàn thành mã tóm tắt
- 21. Trình duyệt Webbrowser Kiểm soát các phím tắt đánh cắp
- 22. Thứ tự thay đổi/phím tắt/nhấn phím trong jQuery
- 23. Các phím tắt khác nhau chính (HADOOP)?
- 24. Kéo và thả phím tắt được tạo động
- 25. Phím tắt cho phân lớp trong Scala mà không lặp lại các đối số hàm tạo?
- 26. Bàn phím tắt Android
- 27. Phím tắt trong Ứng dụng web
- 28. Sao chép LIne trong qt phím tắt
- 29. Phím tắt Visual Studio
- 30. Tắt phím tắt Linux Mint Alt-F1
Hãy mở rộng câu trả lời của bạn. –