2017-01-11 36 views
-1

このVB.netプログラムでは、コンボボックスのtextchangedイベントに基づいてテキストボックスのキー押しの条件を変更する必要があります。VB.Net - ComboboxのTextchangedイベントのKeypressイベント

たとえば、コンボボックスの選択項目に "0-0-50"が含まれている場合、テキストボックスは10進数を受け入れる必要があります。

これは私のコードであり、それは働いていないと私は間違っているのか分からない:

Private Sub cboFertilizer_TextChanged(sender As Object, e As EventArgs) Handles cboFertilizer.TextChanged 

    Try 
     g_SqlSTR = <string> 
         SELECT FAID, [FertilizerType], [Issued], [ReturnedTransfered], [Used], [UsedRemarks] 
         ,[ReturnTransfer], [ReturnTransferRemarks], [Sold], [SoldRemarks], [UsedInOtherCrops] 
         ,[UsedInOtherCropsRemarks], [Others], [OthersRemarks], [ChildLabor] 
        FROM Buying.tFertilizerAuditDetails 
        WHERE FertilizerType = '<%= cboFertilizer.Text %>' AND FAID = '<%= _FAID %>' 
        </string> 
     ExecuteSQLQuery(g_SqlSTR) 
     If g_SqlDT.Rows.Count <> 0 Then 
      txtIssued.Text = g_SqlDT.Rows(0)("Issued") 
      txtReturned.Text = g_SqlDT.Rows(0)("ReturnedTransfered") 
      txtUsed.Text = g_SqlDT.Rows(0)("Used") 
      txtRemarksUsed.Text = g_SqlDT.Rows(0)("UsedRemarks") 
      txtReturn.Text = g_SqlDT.Rows(0)("ReturnTransfer") 
      txtRemarksReturn.Text = g_SqlDT.Rows(0)("ReturnTransferRemarks") 
      txtSold.Text = g_SqlDT.Rows(0)("Sold") 
      txtRemarksSold.Text = g_SqlDT.Rows(0)("SoldRemarks") 
      txtUsedInCrops.Text = g_SqlDT.Rows(0)("UsedInOtherCrops") 
      txtRemarksUsedInCrops.Text = g_SqlDT.Rows(0)("UsedInOtherCropsRemarks") 
      txtOthers.Text = g_SqlDT.Rows(0)("Others") 
      txtRemarksOthers.Text = g_SqlDT.Rows(0)("OthersRemarks") 

      If g_SqlDT.Rows(0)("ChildLabor").ToString = "True" Then 
       rYes.Checked = True 
      ElseIf g_SqlDT.Rows(0)("ChildLabor").ToString = "False" Then 
       rNo.Checked = True 
      End If 
     Else 
      ClearTextBoxes() 
     End If 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

    If cboFertilizer.Text.Contains("0-0-50") Then 
     AddHandlerDecimal() 
    Else 
     AddHandlerWholeNo() 
    End If 

End Sub 

そして、これがハンドラである:

Public Sub AddHandlerDecimal() 
    AddHandler txtIssued.KeyPress, AddressOf WholenumbersAndDecimalonlywithoutNegative 
    AddHandler txtReturned.KeyPress, AddressOf WholenumbersAndDecimalonlywithoutNegative 
    AddHandler txtUsed.KeyPress, AddressOf WholenumbersAndDecimalonlywithoutNegative 
    AddHandler txtReturn.KeyPress, AddressOf WholenumbersAndDecimalonlywithoutNegative 
    AddHandler txtSold.KeyPress, AddressOf WholenumbersAndDecimalonlywithoutNegative 
    AddHandler txtUsedInCrops.KeyPress, AddressOf WholenumbersAndDecimalonlywithoutNegative 
    AddHandler txtOthers.KeyPress, AddressOf WholenumbersAndDecimalonlywithoutNegative 

End Sub 

Public Sub AddHandlerWholeNo() 
    AddHandler txtIssued.KeyPress, AddressOf Wholenumbersonlywithoutnegative 
    AddHandler txtReturned.KeyPress, AddressOf Wholenumbersonlywithoutnegative 
    AddHandler txtUsed.KeyPress, AddressOf Wholenumbersonlywithoutnegative 
    AddHandler txtReturn.KeyPress, AddressOf Wholenumbersonlywithoutnegative 
    AddHandler txtSold.KeyPress, AddressOf Wholenumbersonlywithoutnegative 
    AddHandler txtUsedInCrops.KeyPress, AddressOf Wholenumbersonlywithoutnegative 
    AddHandler txtOthers.KeyPress, AddressOf Wholenumbersonlywithoutnegative 

End Sub 

私はフォームに配置した場合のハンドラが動作load、しかし私はコンボボックスのtextchangedイベントに "0-0-50"バリデーションのために挿入する必要があります。 ありがとう

+0

私は編集をロールバックしました。あなたの質問を編集してタイトルに(SOLVED)とあなたの質問に答えを加えるのは、ここでは適切ではありません。あなたが見つけた解決策を共有したいのであれば、回答を投稿するために提供された下のスペースを使って[self-answer](http://stackoverflow.com/help/self-answer)を書くことで正しく解決してください。 –

+0

@KenWhite私は実際に答えを追加しましたが、なぜ保存されていないのかわかりません。 –

答えて

0

代わりに各テキストボックスのkeypressイベントを使用しました。

Private Sub txtIssued_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtIssued.KeyPress, txtUsedInCrops.KeyPress, txtUsed.KeyPress, txtSold.KeyPress, txtReturned.KeyPress, txtReturn.KeyPress, txtOthers.KeyPress 

If e.KeyChar <> ControlChars.Back Then 

    If cboFertilizer.Text.Contains("0-0-50") Then 
     WholenumbersAndDecimalonlywithoutNegative(sender, e) 
    Else 
     Wholenumbersonlywithoutnegative(sender, e) 
    End If 

End If 
End Sub 
関連する問題