2014-05-24 46 views
0

我放在一個文本框代碼得到了集中event.what它的作用是當它到達一個焦點從表中找到一個值,並將其分配給textbox.But如果它沒有任何價值,它告訴用戶定義它,並將焦點放在另一個控件上,如果響應是肯定的,否則告訴用戶它不能繼續。最好的地方

什麼,我得到的是,如果沒有相應的價值和響應是肯定不能把注意力集中到可控制和只是循環的message.Any想法打破循環,如果響應是肯定的。

qry = "SELECT * FROM [fuel_allowance] WHERE [project number]='" & projcode & "' AND [employee number]='" & empcode & "'" & _ 
      "AND [current month]=(SELECT [current month] FROM [fuel_allowance] WHERE [project number]='" & projcode & "' AND" & _ 
      "[employee number]='" & empcode & "' AND MONTH([current month])=" & currentdate.Month & " AND YEAR([current month])=" & _ 
      "" & currentdate.Year & ")" 
    If Button5.Tag = "New" Then 
     Dim dr As OleDb.OleDbDataReader = GetData(qry) 
     If dr.HasRows = True Then 
      Do While dr.Read 
       TextBox32.Text = dr.Item("total") 
       If Val(TextBox32.Text) > 800 Then 
        TextBox37.Text = Val(TextBox32.Text) - 800 
       Else 
        TextBox37.Text = 0 
       End If 
       TextBox38.Text = Val(TextBox36.Text) + Val(TextBox37.Text) 
       TextBox31.Text = (Val(TextBox33.Text) + Val(TextBox32.Text)) * Val(TextBox34.Text) 
      Loop 

     Else 
      If MsgBox("Fuel allowance not defined for the current month of " & MonthName(currentdate.Month, False) & vbCrLf & _ 
        "Do you want to define it?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Project Payroll") = MsgBoxResult.Yes Then 
       If TextBox32.Focused = True Then 
        TextBox27.Focus() 
       End If 
      Else 
       MsgBox("Cannot define allowance without defining fuel allowance", MsgBoxStyle.Critical, "Project Payroll") 
       Exit Sub 
      End If 
     End If 
    End If 
+0

這有可能是你指到錯誤的控制。請給你的文本框和按鈕有意義的名稱,而不是「TextBox32」等。然後通過你的代碼,看看你做的是否正確的邏輯,記住,當你.Focus()控件然後它的.GotFocus()處理程序幾乎立即被調用。 –

回答

0

這似乎是GotFocus事件的一個相當普遍的問題。在這裏,你和其他犯過這個錯誤的人一起丟失的是TextBox1在MessageBox關閉後再次觸發GotFocus事件。

你從不此行後執行任何代碼:

If MsgBox("Fuel allowance ...") = MsgBoxResult.Yes 

你的代碼執行是這樣的:

  1. 輸入文本框
  2. 的MessageBox顯示
  3. GotFocus事件被觸發,TextBox1的.LostFocus被解僱。
  4. MessageBox的關閉和TextBox1.GotFocus被激發。
  5. MessageBox的顯示和TextBox1.LostFocus被激發。
  6. 我想你明白了。

我建議你使用TextBox.Enter事件來代替。它僅被觸發一次,並且在關閉Messagebox時不會再被調用。