如何从列表框中获取信息到单选按钮的文本框

问题描述:

我一直在试图弄清楚我做错了什么。我有两个单选按钮,一个用于新用户,另一个用于现有用户。新的用户单选按钮将输入到文本框中的信息添加到列表框中。现有的用户按钮应该在列表框中选中该行并将其分解,然后将其放回到我的文本框中。我已经编写了单选按钮的代码,但它们工作不正常。我如何获得正确处理的信息并显示在文本框中?我试过了一个分割和一个函数,但是这不成功。谁能帮忙?这是我对单选按钮的支持,如果你需要我可以发布其余的代码。如何从列表框中获取信息到单选按钮的文本框

Private Sub rbtnNew_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtnNew.CheckedChanged 
    lstCustomer.Items.Add(RevName(txtName.Text.ToUpper) & " , " & (txtAddress.Text.ToUpper) & " , " & (txtCity.Text.ToUpper)) 

End Sub 

Private Sub rbtnExisting_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbtnExisting.CheckedChanged 
    Dim name1 As String 
    Dim address2 As String 
    Dim city2 As String 
    Dim output() As String 

    name1 = txtName.Text 
    address2 = txtAddress.Text 
    city2 = txtCity.Text 
    output = Split(lstCustomer.SelectedItem.ToString(), ",") 

    txtName.Text = output(0) 
    txtAddress.Text = output(1) 
    txtCity.Text = output(2) 



    lstResults.Items.Clear() 
    txtChairs.Clear() 
    txtSofas.Clear() 

End Sub 

末级

的单选按钮的CheckedChanged事件可以是触发或者是选中还是未选中。确保检查事件功能中单选按钮的值/属性。

编辑:你有错误检查代码的情况下,列表框根本没有任何项目?由于在列表框中没有选择项目,会导致ListBox.SelectedItem返回null或Split()函数无法处理的内容。

http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selecteditem%28v=vs.110%29.aspx

此外,在使用由该系统提供的字符串处理功能,如加入(),CONCAT()。

http://msdn.microsoft.com/en-us/library/aa903372%28v=vs.71%29.aspx

检查尺寸/从分割所得的字符串数组的长度()。

+0

这是你在说什么吗? Private Sub rbtnNew_CheckedChanged(ByVal sender As System.Object,ByVal e As System.EventArgs)Handle rbtnNew.CheckedChanged If rbtnNew.Checked = True Then lstCustomer.Items.Add(RevName(txtName.Text.ToUpper)&“,” &(txtAddress.Text.ToUpper)&“,”&(txtCity.Text.ToUpper)) End If End Sub – 2014-10-29 01:13:45

+0

难以阅读它的方式您的评论格式化的代码,但是,基本上是这样。您实际上也可以在同一个checkedchanged事件中处理这两个单选按钮。 – Zack 2014-10-29 01:34:28

+0

错误仍然表示输出没有位置。我无法从列表框中选择名称来分隔并返回文本框。我正在解释我能做到的最好的方式,但我希望你明白我在说什么。如果我向您发送了该程序以便您能看到问题,它会有帮助吗? – 2014-10-29 02:11:41

在这种情况下,如果将AutoCheck属性设置为True,则这些单选按钮很难管理。无论如何,我给你一对夫妇可能的解决方案:

解决方案#1(自动检查属性设置为true):

Private Sub rbtnNew_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbtnNew.CheckedChanged 

    Static wasInvoked As Boolean 

    If Not wasInvoked Then 

     If rbtnNew.Checked Then 
      lstCustomer.Items.Add(RevName(txtName.Text.ToUpper) & " , " & (txtAddress.Text.ToUpper) & " , " & (txtCity.Text.ToUpper)) 
     Else 
      If lstCustomer.SelectedItem Is Nothing Then 

       wasInvoked = True 
       rbtnNew.Checked = True 
       wasInvoked = False 

       MessageBox.Show("Please select a customer from the list.") 
      End If 
     End If 
    End If 
End Sub 


Private Sub rbtnExisting_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles rbtnExisting.CheckedChanged 

    If rbtnExisting.Checked Then 

     Dim name1 As String 
     Dim address2 As String 
     Dim city2 As String 
     Dim output() As String 

     name1 = txtName.Text 
     address2 = txtAddress.Text 
     city2 = txtCity.Text 
     output = Split(lstCustomer.SelectedItem.ToString(), ",") 

     txtName.Text = output(0) 
     txtAddress.Text = output(1) 
     txtCity.Text = output(2) 


     lstResults.Items.Clear() 
     txtChairs.Clear() 
     txtSofas.Clear() 
    End If 
End Sub 

解决方案#2(单选按钮的自动检查属性设置为false):

Private Sub rbtnNew_CheckedChanged(sender As Object, e As System.EventArgs) Handles rbtnNew.CheckedChanged 
    rbtnExisting.Checked = Not rbtnNew.Checked 
End Sub 

Private Sub rbtnExisting_CheckedChanged(sender As Object, e As System.EventArgs) Handles rbtnExisting.CheckedChanged 
    rbtnNew.Checked = Not rbtnExisting.Checked 
End Sub 

Private Sub rbtnNew_Click(sender As Object, e As System.EventArgs) Handles rbtnNew.Click 

    If Not rbtnNew.Checked Then 
     rbtnNew.Checked = True 
     lstCustomer.Items.Add(RevName(txtName.Text.ToUpper) & " , " & (txtAddress.Text.ToUpper) & " , " & (txtCity.Text.ToUpper)) 
    End If 
End Sub 

Private Sub rbtnExisting_Click(sender As Object, e As System.EventArgs) Handles rbtnExisting.Click 

    If Not rbtnExisting.Checked Then 

     If lstCustomer.SelectedItem Is Nothing Then 

      MessageBox.Show("Please select a customer from the list.") 
     Else 
      rbtnExisting.Checked = True 

      Dim name1 As String 
      Dim address2 As String 
      Dim city2 As String 
      Dim output() As String 

      name1 = txtName.Text 
      address2 = txtAddress.Text 
      city2 = txtCity.Text 
      output = Split(lstCustomer.SelectedItem.ToString(), ",") 

      txtName.Text = output(0) 
      txtAddress.Text = output(1) 
      txtCity.Text = output(2) 


      lstResults.Items.Clear() 
      txtChairs.Clear() 
      txtSofas.Clear() 
     End If 
    End If