ok I don't get this at all. Please help.
I have a MDI windows app. I have one child form let's call Form1. In Form1 I have this code:
Public Sub New(ByVal Barcode As String, ByVal FirstDate As String)
MyBase.New()
FromForm2 = True
FI_TransDate = FirstDate
' This call is required by the Windows Form Designer.
InitializeComponent()
'IF it comes here means that it came from Issue
'Now query the db to get all the info you need then fill in all the fields on Form1.
Try
con = New SqlConnection(connectionString)
'Fill the UOM Drop Down with all System UOM
sql = "Select Barcode, Location, Amount, UOM, UseCode, Source, EmpMyID, Comments, MSDSID " & _
"FROM db WHERE Barcode = '" & Barcode & "'"
If con.State = ConnectionState.Closed Then
con.Open()
End If
cmd.CommandType = CommandType.Text
cmd.Connection = con
cmd.CommandText = sql
dr = cmd.ExecuteReader
If dr.HasRows = True Then
dr.Read()
txtUsgBarcode.Text = Trim(dr("Barcode").ToString)
FI_Amount = dr("Amount")
FI_UOM = dr("UOM").ToString
FI_Location = dr("Location").ToString
FI_UseCode = dr("UseCode").ToString
FI_Source = dr("Source").ToString
FI_EmpMyID = dr("EmpMyID").ToString
FI_Comments = dr("Comments").ToString
FI_MSDSID = dr("MSDSID").ToString
End If
If con.State = ConnectionState.Open Then
con.Close()
dr.Close()
End If
Catch ex As Exception
Dim sBaseClass As New BaseClass
sBaseClass.DisplayError("frmUsage_New()", ex)
End Try
txtUsgAmount.Focus()
End Sub
NOTICE THE "txtUsgAmount.Focus()" CALL AT THE END OF THE METHOD. On Form1 there are 2 textboxes txtUsgBarcode and txtUsgAmount txtUsgBarcode gets the focus by setting the TabIndex to 0. Why is this? Because when user normally open Form1 we want the txtUsgBarcode to have the focus.
On the child Form2 I have this code:
Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles lvIssNoDates.Click
Dim vLU As New Form1(sBarcode, sIssueDate)
vLU.MdiParent = Me.MdiParent
vLU.Show()
Me.Close()
End Sub
So when the user clicks on Button1 on Form2 it sends "sBarcode" and "sIssueDate" to Form1.
And as you can see from the "Public Sub New" at the top Form1 it uses "sBarcode" and "sIssueDate" from Form2 to get information from the database.
Now after the code goes through the "Public Sub New" at the top Form1 it then hits the Form2 Load method.
OK here is where it get strange. If I set a breakpoint any where in the "Public Sub New" at the top Form1 or any where in the Form2 Load method and then run the code and then step line by line through the code when the code gets to the end of the Form2 Load method it directly goes to the txtBarcode_LostFocus (Remember the "txtUsgAmount.Focus()" at the end of the "Public Sub New"). Which makes since to me, Form1 loads so txtBarcode gets focus but then in code "txtUsgAmount.Focus()" is called and that is why txtBarcode_LostFocus gets called.
That is what I want to happen. BUT if I remove all the breakpoints but set one on txtBarcode_LostFocus and then run the code and click on Button1on Form2 just like I did before txtBarcode_LostFocus DOES NOT GET HIT!!!!!!
And on the screen, Form1 appears but does not fill in any information on the fields as like it would do if txtBarcode_LostFocus was hit.
And another strange thing. Like I said Form1 appears on the screen with no info on the screen. But if I click anywhere on the app with my mouse txtBarcode_LostFocus gets hit and all the information fills in on Form1????
If I click anywhere on the code in VS 2010, txtBarcode_LostFocus gets hit and all the information fills in on Form1????
I DON'T GET IT. PLEASE HELP DRIVING ME MAD!!!!
Thank you