KeyDownVe içindeki KeyPressolaylar arasındaki fark nedir .net?
KeyDownVe içindeki KeyPressolaylar arasındaki fark nedir .net?
Yanıtlar:
Görünüşe göre bu konuda bir çok yanlış anlama var!
Arasındaki tek pratik fark KeyDownve KeyPressolmasıdır KeyPresskarakter Bir tuşa basıldıktan kaynaklanan röleleri ve eğer varsa sadece denir.
Başka bir deyişle, Aklavyenize basarsanız , bu olaylar dizisini alırsınız:
Ancak Shift+ tuşuna basarsanız Aşunları elde edersiniz:
Tuşları bir süre basılı tutarsanız, şöyle bir şey elde edersiniz:
Uyarı KeyPressoluşur aradaki KeyDown ve KeyUp, değil sonra KeyUp, diğer yanıtların pek belirttiğimiz gibi, bu KeyPressbir karakter oluşturulmaz çağrılan değildir ve bu KeyDownanahtar basılı tutulurken diğer cevapların birçoğu da, aksine tekrarlanır .
Do tuşları örnekleri değil , doğrudan yapılan çağrıların neden KeyPress:
Tuşların örnekleri yapmak için çağrılarda sonucu KeyPress:
Meraklı için, KeyDownkabaca ilişkilidir WM_KEYDOWN, KeyPressiçin WM_CHAR, ve KeyUpiçin WM_KEYUP. WM_KEYDOWN olabilir anahtar tekrar sayısının daha az olarak adlandırılan, ancak IIRC, WinForms kullanımları tekrar başına tam olarak bir KeyDown oluşturmak için bir tekrar sayısı, gönderir edilebilir.
ProcessDialogKeyve false keyDatadeğerini döndürürseniz , (On) Tuşu'nda (Aşağı | Basın | Yukarı) Sekme tuşunu görürsünüz. Keys.TabKeys.Shift | Keys.Tab
KeyPress olayı karakter olmayan anahtarlar tarafından yükseltilmez; ancak, karakter olmayan anahtarlar KeyDown ve KeyUp olaylarını artırır.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress.aspx
KeyPress yalnızca yazdırılabilir karakterler tarafından tetiklenir ve KeyDown olayından sonra tetiklenir. Yazma gecikme ayarlarına bağlı olarak birden fazla KeyDown ve KeyPress olayı olabilir, ancak yalnızca bir KeyUp olayı olabilir.
KeyDown
KeyPress
KeyUp
KeyPress, KeyDown'dan (ve KeyUp'tan) daha yüksek bir soyutlama seviyesidir. KeyDown ve KeyUp donanımla ilgilidir: bir tuşun klavyedeki gerçek eylemi. KeyPress daha çok "Klavyeden bir karakter aldım".
MSDN'den:
Önemli olaylar aşağıdaki sırada gerçekleşir:
Ayrıca, KeyPress herhangi bir şey yapmasını önlemek için eylemi " ele alındı " olarak bildirme şansı verir .
Handledözelliği KeyUp için çalışmaz ( SuppressKeyPressayrıca çalışmaz).
Tuşa bastığınız anda tuşların her zaman gerçekleştiğini düşündüm, tuşa basma, tuşa basma ve serbest bırakma eylemidir.
biraz farklı açıklama veren bunu buldum: http://bytes.com/topic/net/answers/649131-difference-keypress-keydown-event
Keydown, bırakmadan tuşa basıyor, Keypress tam bir bas ve bırak döngüsüdür.
Başka bir deyişle, KeyDown + KeyUp = Keypress
Gönderen Blog Geliştirici :
Tuş basma ile tuşa basma arasındaki farkı anlamak için, bir "karakter" ile "tuş" arasındaki farkı anlamak yararlıdır . Bir "anahtar" bir süre bilgisayarın klavyesinde fiziksel düğme "karakteri" bir düğmeye basarak yazdığınız bir semboldür. Teoride, keydown ve keyup olayları basılan veya bırakılan tuşları temsil ederken, keypress olayı yazılan bir karakteri temsil eder . Teorinin uygulanması tüm tarayıcılarda aynı değildir.
Not: Bu kavramı anlamak için Ana Etkinlik Test Cihazını da (yukarıda belirtilen sitede bulunur) deneyebilirsiniz .
KEYUP, tuşun ne kadar süreyle basılı tutulacağına bakılmaksızın, tuşun bırakılmasından sonra yalnızca bir kez yakalanacaktır, bu nedenle bu tür bir baskıyı yalnızca bir kez yakalamak istiyorsanız, KEYUP yakalamak için uygun bir olaydır.
KeyPressEtkinlik, hem de karakter otomatik tekrar özelliği sonucu olduğu gibi fiziksel tuş basma yanıt olarak, girişten üretilen her bir karakter için yükseltilir. Klavye Girişi Nasıl Çalışır bu davranışı belgeler.