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