2009-03-11 4 views
0

Versuchen, den Benutzer dazu zu bringen, 3 Zahlen in 3 Textfelder zu setzen und den Durchschnitt zu erhalten.VB.net Die Ausgabe kann nicht in meiner Listbox erscheinen. Anfänger Frage

Private Sub btnAverage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAverage.Click 

    Dim a As Integer = CInt(txtone.Text)   
    Dim b As Integer = CInt(txtTwo.Text) 
    Dim c As Integer = CInt(txtThree.Text) 
    Dim average As Integer 
    average = (a + b + c)/3 

    lstOutput.Text = average 

End Sub 
+0

@lagerdalek, warum hast du nicht ein Anfänger-Tag hinzufügen? Es scheint, als würde das die Suche erleichtern. – JaredPar

Antwort

2

Versuchen Sie, die Art der Durchschnitt von Integer Ändern Sie versuchen, die Average in einem Integer Double

Dim average as Double 

Gerade jetzt zu speichern, die eine ganze Zahl nur halten kann. Durchschnittswerte sind in der Regel nicht ganzzahlig und benötigen einen Datentyp, der dies darstellen kann. Double ist gut für die meisten Situationen. Das sollte dein Problem beheben.

EDIT OP erwähnt, dass lstOutput ein ListBox ist

Dies ist einer der verwirrenden Dinge mit WinForms. Obwohl jedes Steuerelement eine Texteigenschaft hat, tun nicht alle von ihnen tatsächlich etwas. Sie gelten nur für Elemente, die direkt einen einzelnen Textblock oder Wert anzeigen. Ex Button, Label, etc ...

Eine ListBox hingegen zeigt eine Gruppe von Elementen an. Sie möchten der Liste ein neues Element hinzufügen.

lstOutput.Items.Add(average.ToString()) 
+0

Aus irgendeinem Grund erscheint nichts in der Liste, wenn ich auf die Schaltfläche klicke. – Davey

+0

Das scheint es behoben zu haben. Danke für die Hilfe. JaredPar FTW! – Davey

0

Sind Sie sicher, dass txtOne.text txtTwo.text und txtThree.txt wird immer ein Integer-Wert sein?

Möglicherweise müssen Sie auch die a, b, c vars in Doubles ändern und sicherstellen, dass der Benutzer keine nicht numerischen Werte eingegeben hat.

Wenn der Benutzer "eins" in die txtOne-Textbox schreibt, erhalten Sie eine Ausnahme kablowee.

(Luft Codierung hier)

dim a as new double 
    try 
     if isnumeric(txtOne.text.tostring.trim) then 
      a = cdbl(txtOne.text.tostring.trim) 
     end if 

    'repeat for b and c ... 

    catch ex as exception 
     messagebox.show(ex.message.tostring) 
    end try 

Und ich bin mir nicht sicher, ob ich recht darüber bin, (vielleicht jemand mich aufklären wird), aber nicht .NET-Typ Konvertierung von String betrachtet anders in int in diesen beiden Fällen

a = cint(txtOne.text) 

und

a = cint(txtOne.text.tostring) 

???

1

Die Text-Eigenschaft eines Listenfelds wird ausgewählten Artikel abrufen oder festlegen. Sie haben Ihren Durchschnitt noch nicht zur Listbox hinzugefügt.

Versuchen:

lstOutput.Items.Add(average)

Verwandte Themen