2016-06-10 1 views
0

ich arbeite in VB und eine Veranstaltung, die eine Anzahl von Werten aktualisieren, in einem DropDown soll, und aktualisieren Sie den Text entsprechend:Visual Basic - DropDown Text nicht verändert Wert widerzuspiegeln

 For i As Integer = 0 To (prices.Items.Count - 1) 
      If prices.Items(i).Text.Contains("£") Then 
       Dim dConvertedValue = getTextAsDouble(prices.Items(i).Value)/dConversionRate 
       prices.Items(i).Value = dConvertedValue.ToString() 

       'should update displayable text here, but no change 
       prices.Items(i).Text = (Math.Floor(dConvertedValue).ToString("N") & "$") 
      End If 
     Next 

Dies funktioniert fein in der Theorie, und ich habe durchgestanden und kann sehen, dass sich die Werte wie erwartet ändern. Das Dropdown wird jedoch zu keinem Zeitpunkt aktualisiert.

Ich bin sehr neu in VB, so könnte es etwas so einfach wie ein Syntaxfehler sein. Weiß jemand, warum das sein könnte?

Mark

+1

Versuchen Zusatz 'prices.Refresh()' oder 'prices.Invalidate()' Wenn Sie fertig sind, erzwingen Sie das Dropdown-Menü, um sich selbst neu zu zeichnen –

Antwort

1

Versuchen Sie dies mit Ich habe Ihre genauen Code verwendet, aber geändert, um die Schleife zu 'Für jeden'

For each Item as ListItem in prices.items 
    If Item.Text.Contains("£") Then 
     Dim dConvertedValue = (getTextAsDouble(Item.Value)/dConversionRate) 
     Items.Value = dConvertedValue.ToString() 
     Items.Text = (Math.Floor(dConvertedValue).ToString("N") & " sq m") 
    End If 
Next 
+0

Danke, ich werde dies versuchen. Ich wusste nicht, dass diese beiden Loops unterschiedlich funktionierten. Warum könnte das den Unterschied ausmachen? – marcuthh

+0

Ich bin mir nicht sicher, dass es einen Unterschied machen würde ... –

+0

Ich habe keine Ahnung, um ehrlich zu sein, eine plausible Erklärung könnte sein, dass Sie eher durch einen Gegenstand als durch einen Index laufen. Ich habe nur auf Erfahrung geantwortet, wie es für mich arbeitete. 0_ – Leprechaun