новая строка в списке - PullRequest
0 голосов
/ 24 марта 2012

ОК. У меня проблемы с написанием новой строки в списке. Это должно быть что-то простое и Я не могу понять это.

dim decInput1 as decimal = 40.65
dim decInput2 as decimal = 500.90
dim decInput3 as decimal = 450.89
dim strOutput as string

strOutput = " Here is decInput1 " & decInput1.tostring("c")
strOutput &= " Here is decInput2 " & decInput2.tostring("c")
strOutput &= " here is decInput3 " & decInput3.tostring("c")

lstBox.items.clear()
lstBox.items.add(strOutput)

вывод, который я хочу, должен быть
40,65
500,90
450,89 но я продолжаю получать все это в одну строку. это не код из реальной программы, над которой я работаю, но похожий. спасибо за помощь


Это моя настоящая программа. Я пытаюсь отобразить в 2 столбцах для названия и суммы в 4 разных списка для 4 разных сотрудников. и я в этот момент так потерян. как вы можете видеть, это не унифицировано, когда дело доходит до утверждений о различных сотрудниках, где я испробовал несколько различных техник. Мне не нужен ответ. Просто, может быть, изложение примера в самой простой форме, которую вы можете для меня, пожалуйста. спасибо

Private Sub btnEnter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnter.Click
    Dim intCount1 As Integer = 1                          ' count increment
    Dim intCount2 As Integer = 1
    Dim intColumn As Integer = 1
    Dim decEmployee4Hours As Decimal = 0
    Dim decPayRate As Decimal = 0                        ' stores pay rate
    Dim decEmployee1Pay As Decimal = 0                   ' employee 1 pay rate
    Dim decEmployee2Pay As Decimal = 0
    Dim decEmployee3Pay As Decimal = 0
    Dim decEmployee4Pay As Decimal = 0
    Dim decHours As Decimal = 0                          ' stores hours
    Dim decEmployee1Hours As Decimal = 0                 ' stores the hours for each employee
    Dim decEmployee2Hours As Decimal = 0
    Dim decEmployee3Hours As Decimal = 0
    Dim strInput As String                               ' stores string
    Dim dblStateTax As Double = CDbl(txtStateTax.Text)
    Dim dblFedTax As Double = CDbl(txtFedTax.Text)
    Dim dblFICA As Double = CDbl(txtFICA.Text)
    Dim decEmployee1Gross As Decimal = 0
    Dim decEmployee2Gross As Decimal = 0
    Dim decEmployee3Gross As Decimal = 0
    Dim decEmployee4Gross As Decimal = 0
    Dim decEmployee1StateTax As Decimal = 0
    Dim decEmployee2StateTax As Decimal = 0
    Dim decEmployee3StateTax As Decimal = 0
    Dim decEmployee4StateTax As Decimal = 0
    Dim decEmployee1FedTax As Decimal = 0
    Dim decEmployee2FedTax As Decimal = 0
    Dim decEmployee3FedTax As Decimal = 0
    Dim decEmployee4FedTax As Decimal = 0
    Dim decEmployee1FICA As Decimal = 0
    Dim decEmployee2FICA As Decimal = 0
    Dim decEmployee3FICA As Decimal = 0
    Dim decEmployee4FICA As Decimal = 0
    Dim decEmployee1NetPay As Decimal = 0
    Dim decEmployee2NetPay As Decimal = 0
    Dim decEmployee3NetPay As Decimal = 0
    Dim decEmployee4NetPay As Decimal = 0
    Dim strEmployee1 As String
    Dim strEmployee2 As String
    Dim strEmployee3 As String
    Dim strEmployee4 As String


    ' get pay rate for each employee
    For intCount1 = 1 To 4 Step 1

        strInput = InputBox("Enter Pay Rate for employee " & intCount1.ToString())
        If intCount1 = 1 Then
            decEmployee1Pay = CDec(strInput)
            lblEmployee1A.Text = decEmployee1Pay.ToString("c")
        ElseIf intCount1 = 2 Then
            decEmployee2Pay = CDec(strInput)
            lblEmployee2A.Text = decEmployee2Pay.ToString("c")
        ElseIf intCount1 = 3 Then
            decEmployee3Pay = CDec(strInput)
            lblEmployee3A.Text = decEmployee3Pay.ToString("c")
        ElseIf intCount1 = 4 Then
            decEmployee4Pay = CDec(strInput)
            lblEmployee4A.Text = decEmployee4Pay.ToString("c")
        End If

    Next

    For intCount2 = 1 To 4 Step 1
        strInput = InputBox("Enter the hours for employee " & intCount2.ToString())
        If intCount2 = 1 Then
            decEmployee1Hours = CDec(strInput)
            lblEmployee1B.Text = decEmployee1Hours.ToString()
        ElseIf intCount2 = 2 Then
            decEmployee2Hours = CDec(strInput)
            lblEmployee2B.Text = decEmployee2Hours.ToString()
        ElseIf intCount2 = 3 Then
            decEmployee3Hours = CDec(strInput)
            lblEmployee3B.Text = decEmployee3Hours.ToString()
        ElseIf intCount2 = 4 Then
            decEmployee4Hours = CDec(strInput)
            lblEmployee4B.Text = decEmployee4Hours.ToString()
        End If

    Next

    decEmployee1Gross = decEmployee1Pay * decEmployee1Hours
    decEmployee1StateTax = decEmployee1Gross * dblStateTax
    decEmployee1FedTax = decEmployee1Gross * dblFedTax
    decEmployee1FICA = decEmployee1Gross * dblFICA
    decEmployee1NetPay = decEmployee1Gross - decEmployee1FedTax - decEmployee1StateTax -decEmployee1FICA

    lstBox1.Items.Clear()

    For intColumn = 1 To 2 Step 1
        If intColumn = 1 Then
            strEmployee1 = " Gross pay: "
            lstBox1.Items.Add(strEmployee1)
            strEmployee1 = " State Income tax: "
            lstBox1.Items.Add(strEmployee1)
            strEmployee1 = " Federal Income Tax: "
            lstBox1.Items.Add(strEmployee1)
            strEmployee1 = " FICA: "
            lstBox1.Items.Add(strEmployee1)
            strEmployee1 = " Net Pay: "
            lstBox1.Items.Add(strEmployee1)
        ElseIf intColumn = 2 Then
            strEmployee1 = decEmployee1Gross.ToString("c")
            lstBox1.Items.Add(strEmployee1)
            strEmployee1 = decEmployee1StateTax.ToString("c")
            lstBox1.Items.Add(strEmployee1)
            strEmployee1 = decEmployee1FedTax.ToString("c")
            lstBox1.Items.Add(strEmployee1)
            strEmployee1 = decEmployee1FICA.ToString("c")
            lstBox1.Items.Add(strEmployee1)

        End If
    Next

    decEmployee2Gross = decEmployee2Pay * decEmployee2Hours
    decEmployee2StateTax = decEmployee2Gross * dblStateTax
    decEmployee2FedTax = decEmployee2Gross * dblFedTax
    decEmployee2FICA = decEmployee2Gross * dblFICA
    decEmployee2NetPay = decEmployee2Gross - decEmployee2FedTax - decEmployee2StateTax - decEmployee2FICA

    strEmployee2 = " Employee Gross pay " & vbCrLf & "    " & decEmployee2Gross.ToString("c") & vbCrLf & "aaaaa"
    strEmployee2 &= " Employee State Income tax " & vbCrLf & "     " & decEmployee2StateTax.ToString("c") & vbCrLf
    strEmployee2 &= " Employee Federal Income Tax " & vbCrLf & "     " & decEmployee2FedTax.ToString("c") & vbCrLf
    strEmployee2 &= " Employee FICA " & vbCrLf & "     " & decEmployee2FICA.ToString("c")
    strEmployee2 &= " Net Pay " & vbCrLf & "     " & decEmployee2NetPay.ToString("c")

    lstBox2.Items.Clear()


    lstBox2.Items.Add(strEmployee2)

    decEmployee3Gross = decEmployee3Pay * decEmployee3Hours
    decEmployee3StateTax = decEmployee3Gross * dblStateTax
    decEmployee3FedTax = decEmployee3Gross * dblFedTax
    decEmployee3FICA = decEmployee3Gross * dblFICA
    decEmployee3NetPay = decEmployee3Gross - decEmployee3FedTax - decEmployee3StateTax - decEmployee3FICA

    strEmployee3 = " Employee Gross pay " & vbCrLf & "    " & decEmployee3Gross.ToString("c") & vbCrLf
    strEmployee3 &= " Employee State Income tax " & vbCrLf & "     " & decEmployee3StateTax.ToString("c") & vbCrLf
    strEmployee3 &= " Employee Federal Income Tax " & vbCrLf & "     " & decEmployee3FedTax.ToString("c") & vbCrLf
    strEmployee3 &= " Employee FICA " & vbCrLf & "     " & decEmployee3FICA.ToString("c")
    strEmployee3 &= " Net Pay " & vbCrLf & "     " & decEmployee3NetPay.ToString("c")

    lstBox3.Items.Clear()

    lstBox3.Items.Add(strEmployee3)

    decEmployee4Gross = decEmployee4Pay * decEmployee4Hours
    decEmployee4StateTax = decEmployee4Gross * dblStateTax
    decEmployee4FedTax = decEmployee4Gross * dblFedTax
    decEmployee4FICA = decEmployee4Gross * dblFICA
    decEmployee4NetPay = decEmployee4Gross - decEmployee4FedTax - decEmployee4StateTax - decEmployee4FICA

    strEmployee4 = " Employee Gross pay " & vbNewLine & " " & decEmployee4Gross.ToString("c") & vbNewLine
    strEmployee4 += " Employee State Income tax " & vbNewLine & " " & decEmployee4StateTax.ToString("c") & vbNewLine
    strEmployee4 += " Employee Federal Income Tax " & vbNewLine & " " & decEmployee4FedTax.ToString("c") & vbNewLine
    strEmployee4 += " Employee FICA " & vbNewLine & " " & decEmployee4FICA.ToString("c") & vbNewLine
    strEmployee4 += " Net Pay " & vbNewLine & " " & decEmployee4NetPay.ToString("c")

    lstBox4.Items.Clear()

    lstBox4.Items.Add(strEmployee4)
End Sub

Ответы [ 2 ]

1 голос
/ 25 марта 2012

Можно, но это немного работы.

Необходимо установить DrawMode = OwnerDrawVariable, а затем подписаться на события DrawItem и MeasureItem .

В простейшем виде:

Protected Overrides Sub OnLoad(e As EventArgs)
  ListBox1.DrawMode = DrawMode.OwnerDrawVariable
  ListBox1.Items.Add("This is line one." + Environment.NewLine + "This is line two.")
  ListBox1.Items.Add("This is another line.")
  MyBase.OnLoad(e)
End Sub

Private Sub ListBox1_MeasureItem(sender As Object, e As MeasureItemEventArgs) Handles ListBox1.MeasureItem
  e.ItemHeight = e.Graphics.MeasureString(ListBox1.Items(e.Index).ToString, ListBox1.Font).Height
End Sub

Private Sub ListBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ListBox1.DrawItem
  e.DrawBackground()
  e.Graphics.DrawString(ListBox1.Items(e.Index).ToString, ListBox1.Font, Brushes.Black, e.Bounds)
End Sub
0 голосов
/ 24 марта 2012

Единственный способ иметь несколько строк в списке - это добавить каждую строку как отдельный элемент. Единственный способ обойти это - создать собственный элемент управления, который только выглядит как список, и это совсем не тривиально или просто.

...