2017-10-12 76 views
0

See pic我对vb.net不熟悉。所以,我试图做的是当我点击选择的产品,我把数量。总价格将显示列表视图中数量和价格的乘积值。我把情况2的代码,因为它是价格,但是当我运行它,它显示0,然后当我改变它的值为2,它不会乘。这里是我到目前为止的代码:如何将文本框中的值与列表视图中的列相乘?

Imports System.Data.SqlClient 
Imports System.IO 

Public Class Form2 
    Dim con As SqlConnection = New SqlConnection("server=.\SQL;database=try;Trusted_Connection=TRUE") 
    Dim cmd As SqlCommand 
    Dim cmd2 As SqlCommand 
    Dim rdr As SqlDataReader 

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     con.Open() 
     con.Close() 

     list() 

    End Sub 
    Sub list() 
     con.Open() 


     cmd = New SqlCommand("SELECT * FROM ProductTable", con) 
     rdr = cmd.ExecuteReader 
     ListView1.Items.Clear() 
     If rdr.HasRows Then 
      Do While rdr.Read() 
       Dim arr As String() = New String(2) {} 
       Dim itm As ListViewItem 

       arr(0) = rdr("productID") 
       arr(1) = rdr("product") 
       arr(2) = rdr("price") 

       itm = New ListViewItem(arr) 
       ListView1.Items.Add(itm) 


      Loop 

     End If 

     con.Close() 
    End Sub 
    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged 
     With Me.ListView1 
      Dim i As Integer 
      For Each item As ListViewItem In ListView1.SelectedItems 
       i = item.Index 
      Next 

      Dim innercounter As Integer = 0 
      For Each subItem As ListViewItem.ListViewSubItem In ListView1.Items(i).SubItems 
       Dim myString As String = ListView1.Items(i).SubItems(innercounter).Text 
       Select Case innercounter 
        Case 2 
         txtqty.Text = 0.ToString() 
         txtqty.Text = CType(0, String) 
         txtqty.Text = CStr(0) 
         txtqty.Text = "0" 
         txtprice.Text = myString * txtqty.Text 

       End Select 
       innercounter += 1 
      Next 
     End With 
    End Sub 

End Class 
+0

集'选项严格On'文本控件包含文本。他们不是数字,除非你转换成数字,否则不能相乘。文本控件通常还需要用户输入,这在表单加载中不会发生。与选择ListView项目相同。这些全局数据库提供者对象也会引起你的头痛。阅读[问]并参加[游览] – Plutonix

+0

您必须将'strings'转换为'integer' –

回答

0

你可以有一个Function乘值TextboxListView

Private Function calculate() As Integer 
    Dim price As Integer 
    Dim qty As Integer 
    Dim totalPrice As Integer 
    Try 
     price = CInt(ListView1.Items(ListView1.FocusedItem.Index).SubItems(2).Text) 
     qty = CInt(txtqty.Text) 
     totalPrice = price * qty 
    Catch ex As Exception 
     MsgBox("Invalid Inputs!") 
    End Try 
    Return totalPrice 
End Function 

转换的StringsIntegers,这样就可以相乘。 CInt()是将文本转换为int的代码。围绕它由Try Catch来处理无效输入。

然后调用FunctionListView1.SelectedIndexChangedtxtqty_TextChanged

Private Sub txtqty_TextChanged(sender As Object, e As EventArgs) Handles txtqty.TextChanged 
    txtprice.Text = calculate().ToString 
End Sub 

Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged 
    txtprice.Text = calculate().ToString 
End Sub 
相关问题