2013-08-14 20 views
6

Form üzerinde Menustrip Öğe var ve bastığımda Form benim kapatır. Ben MenuStrip Öğe "ESC" için kısayol tuşunu yapmak istiyorum, ama "ShorcutKey" ayarlarında, ESC için bir seçeneği yok, "ESC" olduğunu yapmak için herhangi bir yolu var mı? "ESC" kısayol tuşu olan MenuStrip Öğesinde göstermem gerekiyor.ESC Tuşu kısayolu ekleyebilir misiniz?

bu işe DEĞİLDİR yapmak:

Bunun için doğrudan bir çözüm yoktur sanmıyorum
menuStripItem.ShortcutKeys = Keys.Escape; 
+2

Durum nedir? "CancelButton" ile daha iyi olabilirsiniz. – Ryan

cevap

6

, Sen içinde kod

menuStripItem.ShortcutKeyDisplayString = "ESC"; 

yer alan ShortcutKeyDisplayString bu çözümü kullanabilirsiniz KeyDown formunun, formun ESC tuşlarına basıp basmadığını ve Close() formunu kontrol edin.

+0

Programı kapatmak için ESC tuşuna basabilmem için bir kod var. Yapmak istediğim, kısayol tuş alanında kısayol tuşunun ESC – Dozer789

+0

olduğunu göstermesidir. – Dozer789

+1

Kodumda gösterildiği gibi 'ShortcutKeyDisplayString' özelliğini' Escape' olarak ayarlayabilirsiniz. ESC'yi kısayol tuşu olarak göstermeniz yeterlidir. – Kurubaran

8

Winforms seçtiğiniz kısayol tuşu hakkında seçici davranır. Kural, bir işlev anahtarı (F1-F12) veya Keys.Control veya Keys.Alt içeren bir başka anahtar olması gerektiğidir. Buradaki daha büyük niyet, yanlışlıkla bir TextBox, kullanıldığında normal bir anahtarın yerini tutamayacağınızdır. Escape tuşu normal olarak bir iletişim kutusunun iptal düğmesini çalıştırır.

Keys.Escape oldukça özeldir; Windows'taki genel kısayol tuşları olduklarından, Alt + Escape ve Ctrl + Escape çalışmaz.

ShortcutKeys özelliğini kullanamazsınız; Escape tuşunu farklı olarak tanımalısın. Form sınıfınızda ProcessCmdKey() yöntemini geçersiz kılarak kolayca yapılır. Bu kodu aşağıdaki formüle yapıştırın:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { 
    if (keyData == Keys.Escape) { 
     this.Close(); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+2

Bu, onu kapatmak için çalışacaktır, ancak bunun için zaten bir kodum var. İhtiyacım olan şey, kısayol tuşunu göstermekti. – Dozer789

+1

@ Dozer789 Kapatmak için kodunuz olsa bile, bu kod daha iyidir çünkü varsayılan komut-anahtar sürecini önleyebilirsiniz, 'ESC', bazı durumlarda beklenmedik şekilde çalışabilen özel bir komut anahtarıdır. Dolayısıyla, varsayılan eylemi devre dışı bırakmak/geçersiz kılmak daha iyi olur. –

+0

Bu kodu programım için kullanıyor olabilirim, hatırlamıyorum. Eğer yapmazsam, muhtemelen bu kodu kullanacağım. – Dozer789

İlgili konular