वीबीए फॉर्म में एंटर दबाकर मैं टेक्स्टबॉक्स में फोकस कैसे रख सकता हूं?

यह कोड टेक्स्ट को लिस्टबॉक्स में जोड़ता है और मैं अन्य आइटम प्राप्त करने के लिए तैयार होने के लिए टेक्स्टबॉक्स पर फोकस रखना चाहता हूं।

जब मैं जोड़ें बटन में क्लिक करता हूं, तो यह टेक्स्ट को लिस्टबॉक्स में जोड़ता है और टेक्स्टबॉक्स पर फोकस लौटाता है, जब मैं एंटर दबाता हूं तो यह नहीं होता है, यहां तक ​​​​कि कठिन भी यह उसी कोड का उपयोग करता है। किसी भी सुझाव?

टेक्स्टबॉक्स के लिए यह मेरा कोड है:

Private Sub TxtOtherAsset_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    If KeyCode = 13 Then
        CmdAddOtherAsset_Click
    End If

End Sub

और यह मेरे बटन के लिए कोड है:

Private Sub CmdAddOtherAsset_Click()

    If TxtOtherAsset.Text <> "" Then
        ListAddedAssets.AddItem TxtOtherAsset.Text
        TxtOtherAsset.Text = ""
    End If

    TxtOtherAsset.SetFocus

End Sub

मैंने कई तरीकों की कोशिश की है, लेकिन मैं टेक्स्टबॉक्स पर फोकस वापस करने में सक्षम नहीं हूं। एंटर दबाने के बाद, TabIndex में फोकस अगले पर जाता है।

6
rubenploneda 14 जुलाई 2011, 01:04

2 जवाब

सबसे बढ़िया उत्तर

मेरे सिर के ऊपर से: KeyCode को 0 पर सेट करने का प्रयास करें। इसके अलावा, KeyCodeConstants क्लास (कोर लाइब्रेरी से) का उपयोग करके यह निर्धारित करें कि एंटर कुंजी क्या है।

इस कदर:

If KeyCode = KeyCodeConstants.vbKeyReturn Then
    CmdAddOtherAsset_Click
    KeyCode = 0
End If

उस लाइन को हटा दें जिसे आप अन्य उप (TxtOtherAsset.SetFocus) पर फ़ोकस सेट करने का प्रयास कर रहे हैं।

आशा है कि यह आप के लिए काम करता है। मैंने इसका परीक्षण नहीं किया।

7
armstrhb 9 नवम्बर 2012, 00:15
1
इसने एकदम जादू की तरह काम किया। यह बदलाव करना बेहद आसान था। मैंने दूसरे उत्तर का परीक्षण नहीं किया क्योंकि यह बहुत आसान लग रहा था। और यह काम किया। धन्यवाद!
 – 
rubenploneda
14 जुलाई 2011, 17:49
KeyCode = 0 - यह पंक्ति अद्भुत है! 1-2 घंटे मैं गुगल रहा था, समाधान (यहां तक ​​कि हताश, .NET या VB6 संबंधित) की कोशिश कर रहा था, अन्य घटनाओं का परीक्षण कर रहा था, क्योंकि मैंने उम्मीद खो दी थी KeyDown... जब तक मुझे यह सुनहरी पोस्ट नहीं मिली तब तक कुछ भी काम नहीं आया!
 – 
ZygD
8 मई 2015, 04:22

क्या आप टेक्स्ट बॉक्स में परिवर्तनों को पकड़ने के लिए एंटर कुंजी को ट्रिगर के रूप में उपयोग कर रहे हैं? अगर ऐसा है, तो इसके बजाय आफ्टर अपडेट इवेंट को आजमाएं। साथ ही, ऑन एग्जिट इवेंट पर एक नज़र डालें। जब मैंने देखा, मैंने देखा कि इसमें एक रद्द पैरामीटर है। यदि आप अभी भी की डाउन इवेंट में एंटर की को पकड़ना चाहते हैं, तो आप टेक्स्ट बॉक्स को छोड़ने से रोकने के लिए संभवतः ऑन एग्जिट इवेंट कर सकते हैं। बेशक, इसका शायद मतलब है कि आप स्थायी रूप से फंस गए हैं और बाहर निकलने की अनुमति देने के लिए एक तरीका स्थापित करने की आवश्यकता हो सकती है।

1
TheOtherTimDuncan 14 जुलाई 2011, 02:44