2013-04-28 13 views
5

मेरे पास एक टेक्स्टबॉक्स है और इसके नीचे मेरे पास एक सूची बॉक्स है।सी # - टेक्स्टबॉक्स के लिए "ऊपर तीर" और "नीचे तीर" के लिए कार्रवाइयों को ओवरराइड कैसे करें?

जबकि उपयोगकर्ता टेक्स्टबॉक्स में टाइप कर रहा है यदि वह ऊपर या नीचे तीर दबाता है तो उसे सूची बॉक्स में चयन करना चाहिए। टेक्स्टबॉक्स सभी पात्रों (अंतरिक्ष को छोड़कर) का पता लगाता है लेकिन ऐसा लगता है कि यह तीर प्रेस का पता नहीं लगा सकता है।

इसके लिए कोई समाधान? यह एक डब्ल्यूपीएफ परियोजना बीटीडब्ल्यू है।

संपादित करें, यहाँ T.Kiley के लिए काम कर कोड धन्यवाद है:

private void searchBox_PreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.IsDown && e.Key == Key.Down) 
     { 
      e.Handled = true; 
      //do your action here 

     } 
     if (e.IsDown && e.Key == Key.Up) 
     { 
      e.Handled = true; 
      //do another action here 
     } 
    } 

उत्तर

3

मैंने अभी यह कोशिश की और यह काम करता है। टेक्स्टबॉक्स

private void TextBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
    { 
     if (e.IsDown && e.Key == Key.Down) 
      MessageBox.Show("It works"); 
    } 
+0

कृपया अपनी टिप्पणी संपादित करें ताकि लोग नहीं सोचें कि नया समाधान तोड़ा गया है –

+0

@AMR यदि आवश्यकता महत्वपूर्ण घटना को ओवरराइड करना है, तो [हैंडल] सेट करना सुनिश्चित करें (http://msdn.microsoft.com /en-us/library/system.windows.routedeventargs.handled.aspx) शर्त मिलने के बाद संपत्ति सत्य है: 'e.Handled = true;' –

+0

धन्यवाद आदमी, यह काम करता है! – Kitze

-1

आप वे करने के लिए पाठ बॉक्स के KeyDown घटना सुन सकते हैं। हैंडलर में, जांचें कि तीर कुंजी दबाई गई थी (यदि उपयोगकर्ता बहुत लंबे समय तक बटन दबाता है तो आपको अपने कोड को कई बार ट्रिगर करने से बचने के लिए कुंजी को सुनना पड़ सकता है)।

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Down) 
    { 
     // Do some code... 
    } 
} 
+0

आपके द्वारा प्रस्तुत किया गया समाधान एक Winform समाधान –

+0

है, मैंने इसे पहले से ही कोशिश की है, यह काम नहीं करता है। – Kitze

संबंधित मुद्दे