2017-01-11 4 views
-1

У меня есть эта программа VB.net, где мне нужно изменить условия нажатия клавиш текстовых полей на основе события изменения текста combobox.VB.Net - Событие Keypress в событии TextBanged Combobox

Например, если выбранный элемент в выпадающем списке содержит «0-0-50», тогда текстовые поля должны принимать десятичные числа, иначе - только целые числа.

это мой код и он не работает, и я не знаю, что это неправильно:

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 

Обработчики работать, если я устанавливаю его на форме загружайте, но мне нужно вставить его и в событие с измененным текстом combobox, а также для проверки «0-0-50». Thanks

+0

Я откат вашего редактирования. Здесь не уместно отредактировать ваш вопрос, чтобы сказать (РЕШИТЬ) в названии и добавить решение к вашему вопросу. Если вы хотите поделиться найденным решением, сделайте это правильно, написав [self-answer] (http://stackoverflow.com/help/self-answer), используя пространство, указанное ниже для отправки ответов. –

+0

@KenWhite Я действительно добавил ответ, но я не знаю, почему он не спасен. –

ответ

0

Вместо этого я использовал событие нажатия клавиш для каждого текстового поля.

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 

 Смежные вопросы

  • Нет связанных вопросов^_^