2012-02-19 5 views
2

안녕하세요, 여기 좀 도와주세요 ... 콤보 상자 값을 나타내는 텍스트 상자에 코드를 입력 한 후 ComboBox의 표시 멤버를 어떻게 변경합니까 ??텍스트 상자를 통해 콤보 상자를 변경하십시오. VB.NET

예를

코드 : 02-001 콤보 : 제공자 X

내가 코드를 변경하는 경우 공급자 콤보를 변경해야하고 내가 코드를 변경해야합니다 공급자 콤보를 변경하면 .. 내가하지 않은! ... 어떤 도움 .. heres는 약간의 코드는 내가

if e.keychar = chr(13) Then 
    combobox.valuemember = textbox.text 
    combobox.displaymember = me.stockdataset.selectprovider(@textbox.text) 
end if 

이 코드 변경 콤보 상자 표시 부재를 기억 발견하지만 해당 코드, 그것을 텍스트 상자 나던 변화에 코드를 클릭하여 comobox을 변경하면? ? 사용자 키를 눌러 입력 할 때

답변

0

이것은 잘못된 바인딩 방법입니다. 이것은 다음과 같습니다. 콤보 상자와 텍스트 상자 및 "코드"와 "설명"열 2 개가있는 데이터 테이블로 간단한 양식으로 사례를 시뮬레이션했습니다.

여기에 코드 (당신은 오른쪽으로 내 대답을 표시하는 것을 잊지 말아주십시오) : 당신이 "CODE3"를 입력 쳤을 때

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Try 

      Me.KeyPreview = True'To Enable the Key events : KeyDown, KeyPress and KeyUp 

      Dim dt As New DataTable("T") 
      dt.Columns.Add(New DataColumn("Code")) 
      dt.Columns.Add(New DataColumn("Description")) 
      For i = 1 To 10 
       Dim r As DataRow = dt.NewRow 
       r("Code") = "Code" + CStr(i) 
       r("Description") = "Desc" + CStr(i) 
       dt.Rows.Add(r) 
      Next 

      With ComboBox1 
       .ValueMember = "Code" ' This is case sensitive 
       .DisplayMember = "Description" ' This is case sensitive 
       .DataSource = dt 
      End With 

     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 

    Private Sub TextBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Click 
     SetComoboValue() 
    End Sub 

    Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown 
     If e.KeyCode = Keys.Enter Then SetComoboValue() 
    End Sub 

    Private Sub SetComoboValue() 
     Try 
      If Not String.IsNullOrEmpty(TextBox1.Text) Then 
       ComboBox1.SelectedValue = TextBox1.Text 
      End If 
     Catch ex As Exception 
      MsgBox("Ooops, Invalid code !!!") 
     End Try 
    End Sub 
End Class 

그래서 입력하거나 클릭 TextBox1에가의 콤보 상자가 "Desc3"를 표시합니다

+0

oooooooooooooooooooo 덕분에 바인딩의 값은? 정상입니까? thats 유일한 질문은 고맙습니다 –

+0

나는 당신의 공급자 Datatable에서 어떤 쿼리 (또는 다른 것)를 알지 못합니다. "선택 코드, 설명을 프로 바이더로부터"정렬 할 수있게합니다. "코드, 설명 선택 공급자로부터 ORDER BY 설명 " –

+0

글쎄, 난 왜 직접적으로 보이지 않는지 잘 모르겠다. –

0

변경합니다 ....

가 .... 콤보 상자는 공급자 테이블에 바인딩하여 콤보 상자의 selectedItem을 도와주세요. 그러나 이전에 공급자 목록에 있는지 확인하십시오.

콤보 상자의 SelectionChanged 처리기에서 콤보 상자의 값으로 텍스트 상자 내용을 설정하십시오.

때때로 propertychanged를 사용하는 속성을 사용하고 textbox 및 combobox의 selectedItem을 해당 속성에 바인딩하십시오.

+0

그래서 selectedItems를 정말 정말 내 콤보 상자가 제공 장애 보인다 않는 이유를 하나 개의 질문이 많은 도움이 컨트롤 –

관련 문제