2014-10-29 38 views
0

我一直在試圖弄清楚我做錯了什麼。我有兩個單選按鈕,一個用於新用戶,另一個用於現有用戶。新的用戶單選按鈕將輸入到文本框中的信息添加到列表框中。現有的用戶按鈕應該在列表框中選中該行並將其分解,然後將其放回到我的文本框中。我已經編寫了單選按鈕的代碼,但它們工作不正常。我如何獲得正確處理的信息並顯示在文本框中?我試過了一個分割和一個函數,但是這不成功。誰能幫忙?這是我對單選按鈕的支持,如果你需要我可以發佈其餘的代碼。如何從列表框中獲取信息到單選按鈕的文本框

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 

末級

回答

1

的單選按鈕的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

1

在這種情況下,如果將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 
相關問題