2014-03-26 4 views
-1

배열 안에 항목이있는 목록 상자를 채우려는 중이므로 배열과 할당 된 문자열을 선언했지만이를 올바르게 수행했는지 확신 할 수는 없습니다. 목록 상자에 채울 배열에있는 문자열은 여기에서 이미 수행 한 코드입니다. 어떻게하면 그렇게 할 수 있습니까? 목록 상자에 문자열을 채우는 데 사용할 수있는 코드를 제공 할 수 있습니까? 내가 너무 내 프로그램의 한 형태에 하나 개의 목록 상자가 작동하도록 할배열 항목을 가진 listbox를 채우는 방법 2

Dim NewDefinition As String 

NewDefinition = InputBox(" Please enter definition in the box and click OK. " & " The definition entered will be added to the list. ", " Add Definition") 

lstDefinitions.Items.Add(NewDefinition) 

Dim NewDefinition1 As String = lstDefinitions.Items(0).ToString 
Dim NewDefinition2 As String = lstDefinitions.Items(1).ToString 
Dim NewDefinition3 As String = lstDefinitions.Items(2).ToString 
Dim NewDefinition4 As String = lstDefinitions.Items(3).ToString 
Dim NewDefinition5 As String = lstDefinitions.Items(4).ToString 
Dim NewDefinition6 As String = lstDefinitions.Items(5).ToString 
Dim NewDefinition7 As String = lstDefinitions.Items(6).ToString 
Dim NewDefinition8 As String = lstDefinitions.Items(7).ToString 
Dim NewDefinition9 As String = lstDefinitions.Items(8).ToString 
Dim NewDefinition10 As String = lstDefinitions.Items(9).ToString 

Dim NewDefinitions(10) As String 
NewDefinitions(0) = NewDefinition1 
NewDefinitions(1) = NewDefinition2 
NewDefinitions(2) = NewDefinition3 
NewDefinitions(3) = NewDefinition4 
NewDefinitions(4) = NewDefinition5 
NewDefinitions(5) = NewDefinition6 
NewDefinitions(6) = NewDefinition7 
NewDefinitions(7) = NewDefinition8 
NewDefinitions(8) = NewDefinition9 
NewDefinitions(9) = NewDefinition10 

Intially이 somone에가에서 InputBox를 사용하여 10 텍스트 입력, 그는 입력 각 텍스트는 하나의 변수 문자열, 그 문자열이 다음 할당입니다 이 배열은 다른 양식의 다른 목록 상자를 채우는 데 사용됩니다. 비록 그 방법이 더 쉬울지라도 배열에 대한 지식은 매우 제한적입니다. 인정해야합니다. 더 명확하게 생각합니다.

+0

거의 확실하게 첫 번째 부분을 잘못 수행했습니다. 그러나 처음으로이 질문을하는 것과 마찬가지로, 나는 당신이 정확히 무엇을 성취하려고하는지 혼란 스럽습니다. 그래서 나는 당신을 돕는 것으로부터 어디서부터 시작해야할지조차 모릅니다. 당신이 달성하고자하는 것을 분명하고 단순한 용어로 설명 할 수 있다면 (그 목표를 달성하기 위해서 당신이 생각한 것이 아닌), 나는 혼란을 없애기 위해 먼 길을 갈 것이라고 생각합니다. 현재 예제 코드는 실제로 이해가되지 않으므로 달성하려는 것을 설명하는 데 실제로 도움이되지 않습니다. –

+0

그게 왜 인스턴트 메신저 게시 나는 정말 나쁜 배열, 내가 뭘하고 싶은 하나의 양식에 하나의 목록 상자가 있고 다른 양식에 또 다른 하나는 누군가가 10 단어 (정의)를 첫 번째 목록 상자에 추가하면 누군가를 저장하면 다른 사람이 다른 양식의 단추를 클릭하면 첫 번째 목록 상자에 입력 된 10 개의 단어가있는 다른 목록 상자가 채워집니다.나는 내가 더 명확 해 졌다고 생각한다. @StevenDoggart – user3459587

+0

"어딘가에 저장하라"는 말은 기억 속에 있니? 아니면 디스크에 쓰고 싶다는 뜻입니까? –

답변

0

As Steven Doggart는 당신이 아마이 잘못된 방향으로 가고 있다고 말했다. 첫 번째 부분은 다음과 같아야합니다.

For i As Integer = 1 To 10 Step 1 
    Dim newDefinition As String = InputBox(" Please enter definition in the box and click OK. The definition entered will be added to the list.", " Add Definition") 

    lstDefinitions.Items.Add(NewDefinition) 
Next 

사용자가 항상 10 개의 항목을 입력한다고 가정합니다. 그들이 그것을 한 후에, 당신은 당신이 그 10 가지 항목으로하고 싶은 것이 무엇이든 그것을합니다.

Dim newDefinitions As IEnumerable(Of String) = (From item In lstDefinitions.Items 
               Select item.ToString()) 

For Each newDef As String in newDefinitions 
    ' Do something with each string here 
    Console.Writeline(newDef) 
    ' I wrote to Console, but you can add them to another listbox or whatever. 
Next 
+0

당신의 예제에서 LINQ 쿼리에는 아무런 요점이 없습니다. 왜냐하면 당신은 단지 각각의 newDef As String in lstDefinitions.Items 만 가질 수 있기 때문에, 당신은 그것들이 문자열이라는 것을 알기 때문입니다. 다른 방법으로, 반복자를 'newDef As Object'로 변경하고, 먼저 Console.Writeline (newDef.ToString())을 새로운 목록으로 변환하는 대신 변경할 수 있습니다. 나에게는 특히 초보자에게는 더 단순 해 보입니다. –

+0

@StevenDoggart 좋은 지적. 가끔 LINQ-happy가 조금 있습니다. –

0

하면 ListBoxInputBox 통해 입력 된 항목을 추가 설명하는 첫 번째 단계. 즉,이처럼 ListBoxAdd 메소드를 호출하여 수행 할 수 있습니다

Dim NewDefinition As String 
NewDefinition = InputBox(" Please enter definition in the box and click OK. " & " The definition entered will be added to the list. ", " Add Definition") 
lstDefinitions.Items.Add(NewDefinition) 

그러나, 단 하나 개의 항목을 추가하는. 여러 항목을 추가하려면 별도의 이벤트 처리기 (예 : Click 이벤트의 '정의 추가'버튼)에 해당 코드를 삽입해야합니다. 당신이 순차적으로 고정 번호를 추가하도록 강제하려는 경우, 당신은 대신 예를 들어, 루프를 사용할 수 있습니다

For i As Integer = 0 to 9 
    Dim NewDefinition As String 
    NewDefinition = InputBox(" Please enter definition in the box and click OK. " & " The definition entered will be added to the list. ", " Add Definition") 
    lstDefinitions.Items.Add(NewDefinition) 
Next 

당신은 밖으로 모든 항목을 읽고하는 ListBox에있는 모든 항목을 일단 그것들을 배열에 저장하는 것은 상당히 쉽습니다.

Dim items() As String = lstDefinitions.Items.OfType(Of String).ToArray() 

또는이 같은 루프를 사용할 수 있습니다 : 당신은이 같은 LINQ와 함께 할 수있는 어레이가 있으면

Dim items(lstDefinitions.Items.Count - 1) As String ' Create the array with the correct size 
For i As Integer = 0 To lstDefinitions.Items.Count ' Loop through all of the items in the list box 
    items(i) = lstDefinitions.Items(i).ToString() ' Add the current item to the array 
Next 

, 그것은 ListBox 두 번째에 추가하는 것은 매우 쉽습니다 , 이렇게 :

ListBox2.Items.AddRange(items) 
+0

이유는 모르겠지만 System.NullReferenceException 오류가 발생합니다. 프로그램을 디버깅하고이 코드를 작성한 양식을 열려고 할 때 – user3459587

+0

어떤 행에 있습니까? 디버거를 사용하여 코드를 단계별로 실행하고 변수를 검사하여 어느 것이 null인지 (Nothing) 확인할 수 있습니다. –

관련 문제