Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在Visual Basic中将列表框中的选定项添加到标签_Vb.net_Listbox - Fatal编程技术网

Vb.net 在Visual Basic中将列表框中的选定项添加到标签

Vb.net 在Visual Basic中将列表框中的选定项添加到标签,vb.net,listbox,Vb.net,Listbox,在我正在编写的程序中,最后一个步骤是在标签中显示从列表框中选择的员工姓名和工资(一个用于姓名,一个用于工资),但我不知道如何做到这一点。员工的姓名和工资从文件中读取,并以3种不同的形式(两种只列出姓名,另一种只列出工资)放置在相应的列表框中。在最后一个表单中,用户应该选择一名员工的姓名,该员工的姓名应该出现在一个标签(lblName)中,他们的工资应该出现在另一个标签(lblSalary)中。这些名称列在可选列表框中,但当我单击其中一个时,什么也没有发生 以下是我到目前为止在主窗体上的代码: O

在我正在编写的程序中,最后一个步骤是在标签中显示从列表框中选择的员工姓名和工资(一个用于姓名,一个用于工资),但我不知道如何做到这一点。员工的姓名和工资从文件中读取,并以3种不同的形式(两种只列出姓名,另一种只列出工资)放置在相应的列表框中。在最后一个表单中,用户应该选择一名员工的姓名,该员工的姓名应该出现在一个标签(lblName)中,他们的工资应该出现在另一个标签(lblSalary)中。这些名称列在可选列表框中,但当我单击其中一个时,什么也没有发生

以下是我到目前为止在主窗体上的代码:

Option Strict On
Imports System.IO

Public Class Main

Private Sub open_Click(sender As Object, e As EventArgs) Handles open.Click
    Dim open As New OpenFileDialog
    open.Filter = "text files |*.txt|All Files|*.*"
    open.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)

    If open.ShowDialog() = Windows.Forms.DialogResult.OK Then
        Dim selectedFileName As String = System.IO.Path.GetFileName(open.FileName)
        showNames.Enabled = True
        showSalaries.Enabled = True
        showEmployee.Enabled = True
    End If

    Dim container As New List(Of Project9)
    Using reader As New StreamReader(open.OpenFile)
        While Not reader.EndOfStream
            Dim employee As New Project9
            employee.Name = reader.ReadLine()
            employee.Salary = CDbl(reader.ReadLine())
            container.Add(employee)
        End While
    End Using

    For Each item As Project9 In container
        Names.lstNames.Items.Add(item.Name)
        frmTotal.lstShow.Items.Add(item.Name)
        Salaries.lstSalaries.Items.Add(item.Salary)
    Next

End Sub

Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
    Me.Close()
    Names.Close()
    Salaries.Close()
    frmTotal.Close()
End Sub

Private Sub showNames_Click(sender As Object, e As EventArgs) Handles showNames.Click
    Names.Show()
End Sub

Private Sub showSalaries_Click(sender As Object, e As EventArgs) Handles showSalaries.Click
    Salaries.Show()
End Sub

Private Sub showEmployee_Click(sender As Object, e As EventArgs) Handles showEmployee.Click
    frmTotal.Show()
End Sub
End Class

Public Class Project9

Dim strName As String
Dim dblSalary As Double

Public Property Name As String
    Get
        Return strName
    End Get
    Set(value As String)
        strName = value
    End Set
End Property

Public Property Salary As Double
    Get
        Return dblSalary
    End Get
    Set(value As Double)
        If dblSalary < 0 Then
            dblSalary = 10
        End If
        dblSalary = value
    End Set

End Property


Public Function computeSalary(intMonths As Integer) As Double
    Dim dblTotal As Double = dblSalary * intMonths

    Return dblTotal
End Function

End Class
另外,我怎样才能使一个按钮仅在选中一个项目后才可见


任何帮助都将不胜感激。

如果您利用listbox的Datasource属性,您实际上可以使用Project9项目填充listbox,并使用DisplayMember属性选择在listbox中显示的属性。这有几个优点。无论何时选择列表框项,都可以将其转换为Project9类型的对象,并且可以显示要添加到标签中的任何属性。此外,所选内容也跨列表框绑定在一起,以便一个列表框中的内容与其他列表框中的内容相同。下面是一个可能的示例:

Dim employees As New List(Of Project9)(
    {
        New Project9 With {.Name = "A", .Salary = 1000},
        New Project9 With {.Name = "B", .Salary = 1200},
        New Project9 With {.Name = "C", .Salary = 1100}
        })
ListBox1.DataSource = employees
ListBox1.DisplayMember = "Name"
ListBox2.DataSource = employees
ListBox2.DisplayMember = "Salary"


Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    Dim selectedemployee = DirectCast(ListBox1.SelectedItem, Project9)
    Label1.Text = selectedemployee.Name
    Label2.Text = selectedemployee.Salary.ToString
End Sub

唯一的问题是,名字和薪水都在一个文件中,我用来创建程序的文件与用来给它评分的文件不一样,尽管这个文件的布局与我的相同。如何加载列表与此无关。一旦您有了一个列表,这将向您展示如何在列表框中显示所需的值,以及如何检索所选的值并将这些值放入标签中。
Dim employees As New List(Of Project9)(
    {
        New Project9 With {.Name = "A", .Salary = 1000},
        New Project9 With {.Name = "B", .Salary = 1200},
        New Project9 With {.Name = "C", .Salary = 1100}
        })
ListBox1.DataSource = employees
ListBox1.DisplayMember = "Name"
ListBox2.DataSource = employees
ListBox2.DisplayMember = "Salary"


Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    Dim selectedemployee = DirectCast(ListBox1.SelectedItem, Project9)
    Label1.Text = selectedemployee.Name
    Label2.Text = selectedemployee.Salary.ToString
End Sub