2010-01-28 17 views
5

मुझे एक समस्या है जहां कॉम्बोबॉक्स नियंत्रण इसका आकार बदलते समय टेक्स्ट मान को बदल देगा।आकार बदलने पर विषम कॉम्बोबॉक्स व्यवहार


Option Explicit On 
Option Strict On 

Public Class FMain 
    Private Sub FMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     uxComboBox.DropDownStyle = ComboBoxStyle.DropDown 
     uxComboBox.AutoCompleteSource = AutoCompleteSource.ListItems 
     uxComboBox.AutoCompleteMode = AutoCompleteMode.Suggest 

     ComboTest() 
    End Sub 

    Private Sub ComboTest() 
     Dim value As String = "6" 

     uxComboBox.Text = String.Empty 
     uxComboBox.Items.Clear() 

     uxComboBox.Items.AddRange(New String() {"4 9/16", "6 9/16", "7 9/16", "8 9/16"}) 

     Dim index As Integer = uxComboBox.FindStringExact(value) 
     If uxComboBox.SelectedIndex index Then 
      uxComboBox.SelectedIndex = index 
     End If 

     If uxComboBox.SelectedIndex = -1 AndAlso _ 
      Not String.Equals(uxComboBox.Text, value, StringComparison.OrdinalIgnoreCase) Then 
      uxComboBox.Text = value 
     End If 

     ' unselect the text in the combobox 
     ' 
     uxComboBox.Select(0, 0) 
    End Sub 
End Class 

ध्यान दें कि यह फार्म (FMain) पर यह (uxComboBox) एक एकल बता गया है कि शीर्ष करने के लिए डॉक किया गया है: यहां कुछ नमूना कोड है कि मैं ऊपर काम किया है। जब मैं कोड चलाता हूं तो मुझे लगता है कि combobox का "6" का मान है जो मैं अपेक्षा करता हूं। जब मैं फॉर्म का आकार बदलता हूं, तो combobox को "6 9/16" का मान मिलता है जो मैं अपेक्षा करता हूं।

क्या कोई जानता है कि ऐसा क्यों होता है? कोई सुझाया गया कामकाज?

धन्यवाद!

स्टीफन

उत्तर

5

हां, यह कॉम्बोबॉक्स के मूल विंडोज कार्यान्वयन में एक ज्ञात बग है। इस बग के लिए एक और पहलू है। अपने फॉर्म पर एक बटन डालें और इसे TabIndex = 0 दें, सीबी के टैब इंडेक्स को 1 में बदलें। इसे चलाएं, बटन पर ध्यान केंद्रित होगा। आकार बदलें। ध्यान दें कि कॉम्बोबॉक्स का टेक्स्ट पहले जैसा बदलता है लेकिन अब भी हाइलाइट हो जाता है, भले ही इसमें फोकस हो। भले ही यह नहीं है।

मुझे लगता है कि यह बग विस्टा के आसपास रहा है, यह Win7 में तय नहीं हुआ है। इसके लिए कोई ज्ञात कामकाज नहीं है।

+0

जानकारी के लिए धन्यवाद। हमने अभी वीबी 6 से .NET में माइग्रेट करना समाप्त कर दिया है और यह समस्या वीबी 6 एप्लिकेशन में नहीं होती है। कोई विचार क्यों? – StephenM

+0

यह शायद एक थीमिंग बग है। इनमें से अधिकांश यूआई बग हैं। वीबी 6 दृश्य शैलियों को सक्षम नहीं करता है। और बहुत सारे खिड़की रहित नियंत्रणों का उपयोग करता है। –

+0

जानना अच्छा है। धन्यवाद! – StephenM

0

जब प्रपत्र लोड, ComboTest निष्पादित हो जाता है, और आप एक '6' देखते हैं, लेकिन जब आप उसका आकार बदल नए डेटा नहीं दिखाता, जैसे आप कॉम्बो बॉक्स ताज़ा करने की आवश्यकता लगता है, की परवाह किए बिना आकार बदलें या नहीं।

लाइन के तुरंत बाद uxComboBox.Refresh() आज़माएं।

और 'कॉम्बोटेस्ट' लाइन के बाद, चयनित इंडेक्स को 0 uxComboBox.Index = 0 पर भी सेट करें।

उम्मीद है कि यह मदद करता है, सर्वश्रेष्ठ संबंध, टॉम।

+0

चयनित इंडेक्स को 0 पर सेट करना सिर्फ सूची में पहला आइटम चुनता है जो मैं नहीं चाहता हूं। इसे सेट करने वाले "6" के मान को बनाए रखने की आवश्यकता है। मैंने आपको uxComboBox.Refresh() की कोशिश की जैसा आपने सुझाव दिया लेकिन कोई किस्मत नहीं। जब मैं फॉर्म का आकार बदलता हूं तो व्यवहार वही होता है। मैंने इसे फॉर्म के आकार बदलने की घटना में भी कोशिश की लेकिन फिर, व्यवहार में कोई बदलाव नहीं आया। – StephenM

+0

@ स्टीफनएम: क्या आप फॉर्म के डिजाइनर कोड दिखा सकते हैं? ऐसा लगता है कि कॉम्बो को शीर्ष पर आकार देने और आकार बदलने के लिए, कॉम्बो बॉक्स ताज़ा नहीं होता है। शायद प्रपत्र का आकार बदलने के लिए एक ईवेंट हैंडलर जोड़ सकते हैं और ईवेंट हैंडलर में फोन uxComboBox.Refresh – t0mm13b

+0

पहले से ही है कि लेकिन कोशिश की फिर से, कोई भाग्य। – StephenM

0

मैं विंडोज 10 और विजुअल स्टूडियो 2017 का उपयोग कर रहा हूं। ऐसा लगता है कि यह बग अभी भी आसपास है। हंस पासेंट के उत्तर के साथ मैंने इस तरह से समस्या के आसपास काम किया।

मेरे पास एक कॉम्बो था जो बाएं और दाएं कोने वाले नियंत्रण के रूप में था, इसलिए जब फ़ॉर्म का विस्तार हुआ तो यह फैला हुआ था। जब स्क्रीन का विस्तार हुआ, तो combobox टेक्स्ट को हाइलाइट किया गया था जैसे कि यह ध्यान केंद्रित किया गया था, भले ही यह नहीं था।

चारों ओर एक काम के रूप में मैंने एंकरों में से एक लिया और इसे इसके आगे के टेक्स्ट बॉक्स में जोड़ा। अब मेरा कॉम्बो बॉक्स स्क्रीन के साथ विस्तार नहीं करता है, टेक्स्ट बॉक्स इसके बजाए करता है। मुझे पता है कि यह सभी समाधान ठीक नहीं है लेकिन यह समस्या को हल करने के लिए किसी ऐसी स्थिति में किसी की मदद कर सकता है।

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