none
VB2010 LISTBOX、TEXTBOX的問題 RRS feed

  • 問題

  • 請問若是想要在TEXTBOX上打入文字,如:王小明,之後點選BUTTON加入會在listbox產生001-王小明

    並且之後在textbox上輸入的文字在listbox上會產生排序如:001-王小明  002-李大同 003-xxx...這樣的效果

    我該如何下手呢? 

    請各位大大提供一些新手簡易的方式,我剛學vb翻書還是找不到該如何下手

    謝謝各位大大!!!

    2013年4月10日 上午 07:52

解答

所有回覆

  • 按鈕按下去之後,利用Listbox.Items.Count來做流水號的依據,加上你在TextBox中輸入的文字;之後利用ListBox.Items.Add去加入項目就可以了

    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    2013年4月10日 上午 07:54
    版主
  • 另外請問如果要藉由輸入在textbox上的文字點擊button修改底下listbox原本既有的的選項要該如何編碼呢

    如:001-王小明 改成001-王大明

    2013年4月10日 上午 07:55
  • 請問我該如何進行編碼呢 我找課本輸入上面類似的編碼執行時失敗 不知道是不是因為課本上是片段截圖所以有漏掉了地方
    2013年4月10日 上午 07:58
  • 請問我該如何進行編碼呢 我找課本輸入上面類似的編碼執行時失敗 不知道是不是因為課本上是片段截圖所以有漏掉了地方
    貼一下你目前測試的程式碼來看一下吧,比較容易了解你現在做到什麼程度跟問題在什麼地方

    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    2013年4月10日 上午 08:10
    版主
  • 請問我該如何進行編碼呢 我找課本輸入上面類似的編碼執行時失敗 不知道是不是因為課本上是片段截圖所以有漏掉了地方

    貼一下你目前測試的程式碼來看一下吧,比較容易了解你現在做到什麼程度跟問題在什麼地方

    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If TextBox1.Text <> "" Then
                ListBox1.Items.Add(TextBox1.Text)
                TextBox1.Text = ""
            End If
        End Sub
    End Class

    我這邊是已經可以將TEXTBOX的東西輸入至LISTBOX,但是我不知道該如何讓他再將資料列入LIST的同時進行排序

    並且關於BUTTON2修改的問題,我需要在點選LISTBOX項目時可以藉由點選修改的BUTTON改變我所選中的LISTBOX項目但是我輸入的編碼沒有改變,只是讓項目中多增加一項我所要更改的項目

    編碼:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If TextBox1.Text <> "" Then
                ListBox1.Items.Add(TextBox1.Text)
            Else
                ListBox1.Items(ListBox1.SelectedIndex) = TextBox1.Text
            End If
        End Sub
    End Class

    • 已編輯 s34188550 2013年4月10日 上午 10:06
    2013年4月10日 上午 09:59
  •     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click        
     If TextBox1.Text <> "" Then            
      If ListBox1.SelectedIndex > -1 Then                
       ListBox1.Items(ListBox1.SelectedIndex) = TextBox1.Text            
      End If        
     End If    
    End Sub

    ListBox.Sort 方法

    http://msdn.microsoft.com/zh-tw/library/system.windows.forms.listbox.sort(v=vs.80).aspx

    2013年4月10日 上午 10:19
  • Public Class Form1


        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If TextBox1.Text <> "" Then
                ListBox1.Items.Add(TextBox1.Text)
                TextBox1.Text = ""
            End If
        End Sub
    End Class

    我這邊是已經可以將TEXTBOX的東西輸入至LISTBOX,但是我不知道該如何讓他再將資料列入LIST的同時進行排序

    並且關於BUTTON2修改的問題,我需要在點選LISTBOX項目時可以藉由點選修改的BUTTON改變我所選中的LISTBOX項目但是我輸入的編碼沒有改變,只是讓項目中多增加一項我所要更改的項目

    編碼:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If TextBox1.Text <> "" Then
                ListBox1.Items.Add(TextBox1.Text)
            Else
                ListBox1.Items(ListBox1.SelectedIndex) = TextBox1.Text
            End If
        End Sub
    End Class

    在add的時候,加上一段,例如說

    ListBox1.Items.Add((ListBox1.Items.Count + 1).ToString.PadLeft(3, "0") & "-" & TextBox1.Text)

    ListBox1.Items.Count會告訴你目前ListBox裡面項目的數量,一開始是0,所以把數量加上一,那麼流水編號就會是1號了,後面的以此類推。而『&』這個的功用在VB裡面是串接字串用的。

    第二個問題,以你的程式碼來說,因為你修改的還是會用到Textbox.Text,這樣Text永遠不會是空的,所以永遠都是會是新增的方式對吧;在你的第二個問題會用到ListBox.SelectedIndex,這個是被選中的項目是哪一個,然後你還會需要用到ListBox.Items.Insert,Insert的功能是可以將項目加入到指定位置,add則是一律加到最下面,你用這些資訊查詢一下MSDN,動手試試看,有問題再PO上來討論吧 :)

    漏了一個,還有ListBox.Items.RemoveAt這個可以移除指定位置的項目,原則上就是移除舊的,加入新的;來達到類似是修改的感覺


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守


    • 已編輯 bauannModerator 2013年4月10日 上午 10:30 增加內容
    • 已標示為解答 s34188550 2013年4月10日 上午 11:14
    • 已取消標示為解答 s34188550 2013年4月10日 上午 11:17
    2013年4月10日 上午 10:27
    版主
  • Public Class Form1


        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If TextBox1.Text <> "" Then
                ListBox1.Items.Add(TextBox1.Text)
                TextBox1.Text = ""
            End If
        End Sub
    End Class

    我這邊是已經可以將TEXTBOX的東西輸入至LISTBOX,但是我不知道該如何讓他再將資料列入LIST的同時進行排序

    並且關於BUTTON2修改的問題,我需要在點選LISTBOX項目時可以藉由點選修改的BUTTON改變我所選中的LISTBOX項目但是我輸入的編碼沒有改變,只是讓項目中多增加一項我所要更改的項目

    編碼:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If TextBox1.Text <> "" Then
                ListBox1.Items.Add(TextBox1.Text)
            Else
                ListBox1.Items(ListBox1.SelectedIndex) = TextBox1.Text
            End If
        End Sub
    End Class

    在add的時候,加上一段,例如說

    ListBox1.Items.Add((ListBox1.Items.Count + 1).ToString.PadLeft(3, "0") & "-" & TextBox1.Text)

    ListBox1.Items.Count會告訴你目前ListBox裡面項目的數量,一開始是0,所以把數量加上一,那麼流水編號就會是1號了,後面的以此類推。而『&』這個的功用在VB裡面是串接字串用的。

    第二個問題,以你的程式碼來說,因為你修改的還是會用到Textbox.Text,這樣Text永遠不會是空的,所以永遠都是會是新增的方式對吧;在你的第二個問題會用到ListBox.SelectedIndex,這個是被選中的項目是哪一個,然後你還會需要用到ListBox.Items.Insert,Insert的功能是可以將項目加入到指定位置,add則是一律加到最下面,你用這些資訊查詢一下MSDN,動手試試看,有問題再PO上來討論吧 :)


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    請問

    (3, "0")是甚麼意思呢

    另外請問一下 我在button2修改功能中也是輸入相同編碼,但是為神麼修改過後的listbox項目就沒有編號了呢

    編碼:

     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If TextBox1.Text <> "" Then
                If ListBox1.SelectedIndex = -1 Then
                    ListBox1.Items.Add((ListBox1.Items.Count + 1).ToString.PadLeft(3, "0") & "-" & TextBox1.Text)
                Else
                    ListBox1.Items(ListBox1.SelectedIndex) = TextBox1.Text
                End If
            End If
        End Sub


    2013年4月10日 上午 10:47
  • Hi,

    PadLeft是在字串左邊加入指定長度的字,也就是說像是string.PadLeft(3,"0")這樣的意思是如果字串的長度小於3的話,補字補在字串的左邊,到達長度3,要補上去的字是0,這樣的意思;而你修改的地方是直接用TextBox.Text取代掉了,所以會沒有編號,要利用SelectedIndex把編號也一起加上去


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    2013年4月10日 上午 10:57
    版主
  • Hi,

    PadLeft是在字串左邊加入指定長度的字,也就是說像是string.PadLeft(3,"0")這樣的意思是如果字串的長度小於3的話,補字補在字串的左邊,到達長度3,要補上去的字是0,這樣的意思;而你修改的地方是直接用TextBox.Text取代掉了,所以會沒有編號,要利用SelectedIndex把編號也一起加上去


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    你好,我改成以下編碼依然不行耶@@請問我是哪裡改錯(底線部份)

     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            If TextBox1.Text <> "" Then
                If ListBox1.SelectedIndex = -1 Then
                    ListBox1.Items.Add(TextBox1.Text)
                Else
                    ListBox1.Items(ListBox1.SelectedIndex.ToString.PadLeft(3, "0")) = TextBox1.Text
                End If
            End If
        End Sub

    2013年4月10日 上午 11:05
  • Hi,

    PadLeft是在字串左邊加入指定長度的字,也就是說像是string.PadLeft(3,"0")這樣的意思是如果字串的長度小於3的話,補字補在字串的左邊,到達長度3,要補上去的字是0,這樣的意思;而你修改的地方是直接用TextBox.Text取代掉了,所以會沒有編號,要利用SelectedIndex把編號也一起加上去


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

          ListBox1.Items(ListBox1.SelectedIndex.ToString.PadLeft(3, "0")) = TextBox1.Text請問是否更改錯了呢 剛剛好像不小心把你的回覆給弄消失了=  =..
    2013年4月10日 上午 11:31
  • Hi,

    你加錯邊了,等號右邊的值會取代左邊的,編號應該要用&跟TextBox.Text串起來之後,指定到ListBox的Item才對喔,會像是下面這樣的

    ListBox1.Items(ListBox1.SelectedIndex) = ......


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守

    • 已標示為解答 s34188550 2013年4月10日 上午 11:54
    2013年4月10日 上午 11:31
    版主
  • 謝謝!!! 我完成這個系統了 感謝你的指導!!
    2013年4月10日 上午 11:54