2012-08-22 5 views
0

양식에 테이블을 추가하고 테이블에 2 열과 3 행이 있습니다. 3 행은 이름, 나이 및 장소입니다. 런타임에이 테이블에서 존경받는 행의 두 번째 열의 값을 업데이트하려고합니다. 내가 이미지 이름 위의 eg.In은이테이블 컨트롤을 폼에 추가하는 방법?

enter image description here

같은 테이블을 추가 할 컬럼 1 및 2 열 첫 번째 행의 테이블 행 항목의 하나 이름의 값을 포함합니다.

어떻게 할 수 있습니까?

+0

어쩌면 데이터 격자 사용 – sloth

+0

GridView에서 GridView를 사용해 보았습니다. 설계 부분에서 행이 아닌 열을 추가 할 수 있습니다 .. –

답변

1

컨테이너 클래스의 일종 만들기 (즉 모음의 일종)이 도움이 될 수있는 이러한 링크를 시도하는 키 - 값 쌍을 저장하고 바인딩합니다. 실행시 DataGrid으로 변경하십시오.


Quick'n'dirty 예 : 당신의 Form에서

Class Container 
    Inherits BindingList(Of Value) 

    Class Value 
     Public Property Key As String 
     Public Property Value As Object 
    End Class 

    Public Sub New() 
     Add(New Value With {.Key = "Name"}) 
     Add(New Value With {.Key = "Age"}) 
     Add(New Value With {.Key = "Place"}) 
    End Sub 

    Default Public Overloads Property Item(ByVal key As String) As Object 
     Get 
      Return Me.FirstOrDefault(Function(v) v.Key = key) 
     End Get 
     Set(ByVal value As Object) 
      Dim v = Me.FirstOrDefault(Function(e) e.Key = key) 
      If v Is Nothing Then 
       Add(New Value With {.Key = key, .Value = value}) 
      Else 
       v.Value = value 
      End If 
     End Set 
    End Property 

End Class 

:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    Dim grd = New DataGrid With {.Dock = DockStyle.Fill} 
    Controls.Add(grd) 
    Dim container = New Container() 

    grd.DataSource = container 

    container("Age") = 12 
    container("Place") = "Somewhere" 
End Sub 

enter image description here


그런 다음 DataGrid의 외관을 조정해야합니다. 물론 당신에게 달려 있습니다.

이렇게하면 눈금이 container 개체에 바인딩되어 값을 쉽게 읽고 변경할 수 있습니다.

+0

ok ... 그러나 코드에없는 디자인 모드에서만 행을 추가하려고합니다. –

+0

이것은 지원되지 않습니다. 표준'DataGrid' 또는 다른 표준 WinForm 컨트롤을 사용합니다. 그러나 당신은'DataGrid'를 서브 클래스화할 수 있고, 생성자의이 그리드를 데이터 소스에 바인딩하고, 데이터 소스에 요소를 추가 할 수있는 적절한 desginer 컴포넌트를 만들 수 있습니다. 그러나이 질문/답변의 범위를 벗어납니다. – sloth

관련 문제