2010-08-03 24 views
5

मेरे विंडोज फोन 7 ऐप में मेरे पास एक सिंगल लाइन टेक्स्टबॉक्स है। जब उपयोगकर्ता {ENTER} दबाता है तो मैं टेक्स्टबॉक्स मान स्वीकार करना चाहता हूं और टेक्स्टबॉक्स को सामान्य गैर-संपादन मोड में वापस स्विच करना चाहता हूं।क्या प्रोग्राम बॉक्स को टेक्स्ट बॉक्स को संपादित करने का कोई तरीका है?

असल में, क्या प्रोग्रामेटिक रूप से टेक्स्टबॉक्स को संपादित करना रद्द करने का कोई तरीका है?

मैंने विजुअल स्टेट मैनेजर को सामान्य मोड में मजबूर करने की कोशिश की है जो दृश्य शैली को बदलता है, लेकिन टेक्स्टबॉक्स अभी भी संपादन मोड में है और ऑन-स्क्रीन कीबोर्ड अभी भी दिखा रहा है।

  VisualStateManager.GoToState(
       this.MyTextBox, 
       "Normal", 
       true); 

      VisualStateManager.GoToState(
       this.MyTextBox, 
       "Unfocused", 
       true); 

प्रोग्रामेटिक रूप से अभिभावक नियंत्रण का चयन करने की कोशिश की लेकिन यह भी काम नहीं कर रहा है।

मुझे लगता है कि मुझे कुछ आसान याद आना चाहिए, किसी ने इसे दस लाख बार किया होगा - किसी भी मदद की बहुत सराहना की।

धन्यवाद,

अद्यतन: मैं एक और नियंत्रण करने के लिए ध्यान केंद्रित करने के लिए सेट करने की कोशिश की, लेकिन वह काम नहीं कर रहा था, एसआईपी कुंजीपटल गायब हो जाते हैं कभी नहीं होगा।

लेकिन मैंने इसे किसी अन्य विधि का उपयोग करके निकाला। यह चाल IsReadOnly ध्वज का उपयोग करना था। जब फोकस खो गया या दर्ज किया गया तो दबाया गया था, मैंने नियंत्रण को केवल पढ़ने के लिए सेट किया जो शैली को अपडेट करता है। मुझे बस इतना करना था कि मेरे दृश्य स्टिलीज़ अपडेट करें ताकि यह सही लगे और अब पूरी तरह से काम करता है।

private void MyTextBox_GotFocus(object sender, RoutedEventArgs e) 
    { 
     this.MyTextBox.IsReadOnly = false; 
     this.MyTextBox.SelectAll();    
    } 

    private void MyTextBox_LostFocus(object sender, RoutedEventArgs e) 
    { 
     this.MyTextBox.IsReadOnly = true; 
    } 

    private void MyTextBox_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 

      this.MyTextBox.IsReadOnly = true; 
      VisualStateManager.GoToState(
       this.MyTextBox, 
       "ReadOnly", 
       true); 
      VisualStateManager.GoToState(
       this.MyTextBox, 
       "Unfocused", 
       true); 
      VisualStateManager.GoToState(
       this.MyTextBox, 
       "Valid", 
       true); 
     } 
    } 

उत्तर

3

दो विकल्प::

क्या इसके लायक है के लिए, मेरे कोड अब कुछ इस तरह दिखता (? शायद एक लेबल) कुछ अन्य अप्रासंगिक नियंत्रण पर)

  1. कॉल फोकस (
  2. अक्षम करें फिर टेक्स्टबॉक्स सक्षम करें (हैकी लगता है, लेकिन यह काम करता है)।
+1

के बजाय सक्षम मैं "IsReadOnly" का इस्तेमाल किया - लेकिन एक ही विचार है। धन्यवाद! – will

0

यह मैं इसे कैसे बेन उत्तर के आधार पर किया था, है:

private void SearchBox_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter && !String.IsNullOrEmpty(SearchBox.Text)) 
    { 
    (sender as TextBox).IsEnabled = false; 
    (sender as TextBox).IsEnabled = true; 

    // Process search term here... 
    } 
} 
संबंधित मुद्दे