düğmesine basın TextBox
numaralı telefona Sekme tuşunu basmaya çalışıyorum. Ben Tab tuşu KeyDown
, KeyUp
veya KeyPress
olayları tetiklemek etmediğini biliyoruz. Bulundum: Windows'daki BlackWasp Formlarındaki Sekme Anahtarını Internet'te Algılama. Yaptığım ProcessCmdKey'i geçersiz kılmayı önerdiler, ancak bu da tetiklenmiyor. Tab Tuşunu basmanın güvenilir bir yolu var mı?Sekme Tuşunu Algıla Metin Kutusu
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Tab && textBox_AllUserInput.Focused)
{
MessageBox.Show("Tab key pressed."); }
if (keyData == (Keys.Tab | Keys.Shift) && textBox_AllUserInput.Focused)
{
MessageBox.Show("Shift-Tab key pressed."); }
return base.ProcessCmdKey(ref msg, keyData);
}
sorun Tab tuşuna basın yakalamak olmamasıdır şu şekildedir:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
bool baseResult = base.ProcessCmdKey(ref msg, keyData);
if (keyData == Keys.Tab && textBox_AllUserInput.Focused)
{
MessageBox.Show("Tab key pressed.");
return true;
}
if (keyData == (Keys.Tab | Keys.Shift) && textBox_AllUserInput.Focused)
{
MessageBox.Show("Shift-Tab key pressed.");
return true;
}
return baseResult;
}
Cody Gray'in önerisine göre, ben kod değişti. Böyle TAB, DÖNÜŞ, ESC ve ok tuşları olarak
sen presed olan sekme için bu kodu kullanılan olabilir
Evet, ProcessCmdKey() çok güvenilirdir. Kimse bunu nasıl çözdüğünü anlatamaz. –
My kodudur: korumalı yüzdesel BOOL ProcessCmdKey (ref mesajı Msg Keys keyData) { BOOL baseResult = base.ProcessCmdKey (ref MSG keyData); halinde (keyData == Keys.Tab && textBox_AllUserInput.Focused) { MessageBox.Show ("Sekme tuşuna basıldığında."); , true; } dönüş baseResult; } Tüm 3 cevapları denedim ve hiçbiri işe yaramadı. – user2102327
Geçersiz kılmak için temel uygulamayı çağırmayın. Base.ProcessCmdKey (...) işlevini işlevin sonuna getirin. –