2013-04-09 7 views
7

Mam aplikację formularzy systemu Windows, która ma standardowy TextBox na jej temat. Nie ma żadnych obsługiwanych zdarzeń ani menu w formularzu. Po naciśnięciu skrótu Ctrl + A w celu wybrania całego tekstu, otrzymuję ding i nic nie jest zaznaczone.Wybierz Wszystkie skróty nie działają, gdy właściwość MultiLine ma wartość True

Aby potwierdzić, że przypadkowo nie napisałem kodu, utworzyłem nową aplikację formularzy systemu Windows z tylko polem tekstowym w formularzu. Próbowałem go z C# i VB.Net i jest taki sam w obu. Próbowałem tego w Visual Studio 2012 Update 1 działa na Windows 7 i Visual Studio 2008 działa w systemie Windows XP i zachowuje się tak samo w każdym przypadku.

Mogę łatwo przechwycić kombinację klawiszy w zdaniu KeyDown, ale nawet po ustawieniu e.Cancel = true, urządzenie nadal wydaje dźwięk "ding".

Czy istnieje sposób, aby tłumić dźwięk, a nawet lepiej, sposób, aby pole tekstowe zaakceptować skrót w taki sam sposób, jak robi nie-wielowierszowe pole tekstowe?

Odpowiedz

18

Jest to zaskakujące dla wielu programistów, ale natywna kontrola edycji w systemie Windows nie implementuje Ctrl + A jako skrótu, gdy jest w trybie wieloliniowym. Musi zostać wdrożony przez program, który z niego korzysta. Możesz to zobaczyć na przykład w Notatniku, programie używającym wieloliniowej kontroli edycji. Użyj Plik + Otwórz + Plik, wybierz c: \ windows \ notepad.exe, otwórz węzeł Akceleratora i kliknij dwukrotnie jedną z tabel.

go wykonawczego nie jest trudne:

private void textBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.KeyData == (Keys.Control | Keys.A)) { 
      textBox1.SelectAll(); 
      e.Handled = e.SuppressKeyPress = true; 
     } 
    } 

UPDATE: zmienić w .NET 4.6.1, System.Windows.Forms.TextBox teraz realizuje Ctrl + A dla multi-line tekstowych, jak również.

+0

Hmm, to była dla mnie niespodzianka. +1 – Neolisk

+1

@Hans Passant Dziękuję, wiedziałem o SelectAll, ale wciąż miałem ten irytujący dźwięk "ding". Dodanie 'e.SuppressKeyPress = true' do' e.Handled = true' zatrzymało to. – jac

+0

Pracował. Dzięki :) +1 –

Powiązane problemy