2009-03-31 50 views
7

Tôi đang làm việc trong một ứng dụng WPF, sử dụng C# .net Tôi muốn biết, có cách nào để vô hiệu hóa Backspace trên một trang xaml cụ thể không. Tôi muốn ngăn người dùng sử dụng nút Backspace trên trang xaml cụ thể này. Ngay cả khi người dùng nhấn nút Backspace, sẽ không có hiệu lực nào xảy ra.Vô hiệu hóa backspace trong wpf

Cảm ơn

Trả lời

6

Bạn sẽ cần nắm bắt sự kiện onKeyDown và đặt thành xử lý thành true cho backspace.

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Back) 
    { 
     e.Handled = true; 
    } 
} 
+1

Nếu anh ấy có nghĩa là chuyển hướng, sau đó tình hình có thể phức tạp hơn một chút, như bạn có thể có để xử lý Alt + Left và một số nút chuột. – Joey

+2

Điều này thực sự sẽ xử lý sự kiện PreviewKeyDown, nếu không nếu một điều khiển khác có tiêu điểm (như TextBox), thì bấm phím sẽ không bị chặn. Vì anh ta không nói tại sao anh ta muốn vô hiệu hóa phím backspace, có lẽ anh ta muốn hỗ trợ nó trong các điều khiển nhập cảnh. –

+0

Hey Abe, nó đã hoạt động sự kiện PreviewKeyDown. Cảm ơn rất nhiều. –

21

Nếu bạn muốn ngăn chặn BackSpace sẽ sao lưu lịch sử hàng hải ở một khung WPF, bao gồm "Back" nút phần cứng đặc biệt, sử dụng:

NavigationCommands.BrowseBack.InputGestures.Clear(); 
NavigationCommands.BrowseForward.InputGestures.Clear(); 
+0

Mã này ở đâu? Trong App.xaml.cs hay gì đó? – Brendan

+1

Ok đã tìm ra - đặt nó trong hàm tạo 'NavigationWindow'. – Brendan

0

Vì vậy, tôi ưa thích approach by sipwiz bởi vì tôi đã không muốn vô hiệu hóa tất cả các phím tắt (tôi vẫn muốn sử dụng ALT-trái vv chỉ không phải là Backspace).

Đối với tôi bằng cách sử dụng WPF NavigationWindow, ghi đè phương thức OnKeyDown không hoạt động, cửa sổ vẫn điều hướng trở lại khi tôi nhấn phím Backspace. Ghi đè số OnPreviewKeyDown dường như hoạt động để bắt đầu nhưng sau đó tôi gặp sự cố khi tôi cần phím Backspace để làm việc với hộp văn bản.

Vì vậy, tôi lấy những gì tôi học được từ các approach by Ed Andersen và tôi đã thêm đoạn mã sau vào constructor NavigationWindow tôi:

KeyGesture backKeyGesture = null; 
foreach(var gesture in NavigationCommands.BrowseBack.InputGestures) 
{ 
    KeyGesture keyGesture = gesture as KeyGesture; 
    if((keyGesture != null) && 
     (keyGesture.Key == Key.Back) && 
     (keyGesture.Modifiers == ModifierKeys.None)) 
    { 
     backKeyGesture = keyGesture; 
    } 
} 

if (backKeyGesture != null) 
{ 
    NavigationCommands.BrowseBack.InputGestures.Remove(backKeyGesture); 
} 
Các vấn đề liên quan