में टैब कुंजी प्रेस का पता लगाएं मैं टैबTextBox
में कुंजी प्रेस का पता लगाने की कोशिश कर रहा हूं। मुझे पता है कि टैब कुंजी KeyDown
, KeyUp
या KeyPress
ईवेंट ट्रिगर नहीं करती है। मैंने पाया: इंटरनेट में ब्लैकवॉप्स के विंडोज फॉर्म में टैब कुंजी का पता लगाना। वे ProcessCmdKey को ओवरराइड करने का सुझाव देते हैं, जो मैंने किया था, लेकिन यह या तो ट्रिगर नहीं होता है। क्या टैब कुंजी प्रेस का पता लगाने का कोई विश्वसनीय तरीका है?टेक्स्टबॉक्स
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);
}
समस्या यह है कि यह टैब कुंजी प्रेस पर कब्जा नहीं करता है:
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;
}
कोड़ी ग्रे के सुझाव के अनुसार, मैं इस प्रकार कोड बदल दिया है।
हां, ProcessCmdKey() बहुत विश्वसनीय है। कोई भी नहीं बता सकता कि आपने इसे कैसे फेंक दिया। –
मेरा कोड है: संरक्षित ओवरराइड बूल ProcessCmdKey (रेफ संदेश संदेश, कुंजी कीटाटा) { बूल baseResult = base.ProcessCmdKey (रेफ संदेश, कीटाटा); यदि (keyData == Keys.Tab && textBox_AllUserInput.Focused) { संदेशबॉक्स। दिखाएं ("टैब कुंजी दबाया गया।"); सच वापसी; } वापसी आधार परिणाम; } मैंने सभी 3 उत्तरों की कोशिश की और कोई भी काम नहीं करता। – user2102327
यदि आप इसे ओवरराइड करने जा रहे हैं तो बेस कार्यान्वयन को कॉल न करें। फ़ंक्शन के अंत में 'base.ProcessCmdKey (...) 'ले जाएं। –