2013-09-23 4 views
0

내 목표는 사용자가 입력 한 칼럼 정보를 하나의 폼으로 가져 와서 폼 2의 콤보 박스에 넣는 것입니다. Im은 코딩과 vb.net에 새로운 것이므로 인형을 위해 보관하십시오. 이것이 제가 지금까지 한 가지 형태로 가지고있는 것입니다.목록에서 콤보 박스

Public Class CrewDatabaseForm 
    Public Shared CrewList As List(Of String) 

    Private Sub CrewDatabaseForm_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed 
     Dim CL As New List(Of String) 
     Dim CLPure As New List(Of String) 
     For i As Integer = 0 To DataGridView1.RowCount - 1 
      CL.Add(DataGridView1.Rows(i).Cells(0).Value.ToString) 
     Next 
     CLPure = CL.Distinct 
     CrewList = CLPure 
    End Sub 

    Private Sub CrewDatabaseForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    End Sub 
End Class 

DataGridView1 내가 도구 상자에서 끌어 단지 데이터 그리드입니다. 여기

Public Class NewWellForm 
    Private Sub NewWellForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     ComboBox1.Items.Add(CLPure.Item(1)) 
    End Sub 
End Class 

콤보 상자에 목록을 넣어하려고 : 임은의 보류를 얻을 후, 그것은 별개의 확인 목록에 첫 번째 열 전달이 양식에 대한 공개 목록에 전달하려고

여기 CLPure는 밑줄이 그어져있는 swith squigglies이므로 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 또한 목록에서 배열, 콤보 상자, 열 등으로 변환하는 데 어려움을 겪고 있습니다.이 데이터 소유자간에 변환하는 방법을 배우기위한 좋은 일관성, 구문 또는 리소스가 있습니까?

감사

답변

0

당신의 CrewList 필드 Shared을하기 때문에,이 같은 다른 형태에서 액세스 할 수 있어야합니다 :

Private Sub NewWellForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    ComboBox1.Items.AddRange(CrewDatabaseForm.CrewList.ToArray()) 
End Sub 

AddRange 방법은 한 번에 여러 항목을 추가 할 수 있지만, 당신에게 배열을 주어야합니다. CrewList은 배열이 아닌 List(Of String)이므로 배열로 변환해야 AddRange 메서드에 전달할 수 있습니다. 편리하게도, List(Of String) 클래스는 변환을 매우 쉽게하는 ToArray 메소드를 가지고 있습니다.

+0

그러나 위의 CLPure를 선언 한 방법에 문제가있을 것입니다. 이것에 대한 도움이 필요하십니까? 'CLPure가 선언되지 않았습니다.'오류가 계속 발생합니다. –

+0

'CLPure'는'CrewDatabaseForm_FormClosed' 메소드에 대해 로컬이므로 다른 곳에서는 사용할 수 없습니다. 그 이유는 내 대답, 당신은'NewWellForm_Load' 메서드에있을 때'CrewDatabaseForm.CrewList'를 사용했다. –