This will allow the form without validation firing - and if the form cancel's the shutdown, the autovalidation mode is restored.
I didn't want to adjust the forms (legacy app) as I'm using this in a base class, but this seems to resolve this bug.
When the Text Box loses its focus the value would be validated and the Combo Box would be populate the appropriate values retrieved from the database.
Of course, there was lots of more cool features involved but for the sake of this post I'll keep it simple.
I searched google for some ideas and I came across the following snippet of code So, at my wits end, the only concievable way I could think of getting around this problem was knowing when the close event was coming up in the near future and then...*BAM! 'x', and the form closed (insert best Arny voice) IMMEDIATELY. We use a plug-in architecture to load User Controls at runtime. Cancel in the Validating event of a plug-in prevented the host Form from shutting down properly.
Darin *** Sent via Developersdex Yes, closing the form causes 'validating' to take place. One, remove the "control Box" from the form, so the user cant close it that way. in the btn Cancel_Click event: Removehandeler Text Box1.validating, Addressof Text Box1_Validating -- Terry That doesn't work either, at least not for VB2005. -- Al Reid (who didn't mean to hijack the thread) "Terry" Well it works for me - but one thing I left out - you need to set the cancel buttons 'causes validation' to false. I reprogrammed the device to only send the CR and now the problem is solved. Validating If Not mbln Cancel Then Dim dte Date As Date Time If Date Time. Why it would stop on a textbox with tabstop property set to False - I have no idea, unless it is a behavior of the container its in. Maybe you should be using the Key Down event instead of the Key Press event. here is a line copied from the documentation: "The Key Press event is not raised by noncharacter keys; however, the noncharacter keys do raise the Key Down and Key Up events." My guess is that the gun is sending some noncharacter data to you.Like others I'm sure, I tried creating a handler for the form's Closing event and then setting the event's property to false, but it did NOT do the trick. Cancel = Falseyou do this trick for all of the validating control events, then in the Enter Event of the Exit_Button that triggers before the validating event, you set the b Closing Form = true Then it trigger a cascading event and go to the validating event to perform the AND b Form Closing, and will jump to the elsewere you have the e.Why does Microsoft recommend this approach in the article on "User Validation in Windows Forms"? Auto Validate = auto Validate Setting End If End Sub I found another way to implement this solution First you declare a public property called b Form Closing as a Boolean = false then you include this Boolean in your validation code with an AND like AND b Form Closing = false then here you use Error Provider. Cancel = false AND will disable the validation and allow you to close the form of all the controls validating events.The WM_CLOSE event fires AFTER the WM_SYSCOMMAND / SC_CLOSE and you can restore the value. If the form Protected Overrides Sub Wnd Proc(By Ref m As Message) Dim auto Validate Setting As Auto Validate Dim auto Validate Saved As Boolean = False If m. When you click on the button the validating event fires. If the handle matched then immediately exit the Validating event without setting e. -- Al Reid Well it works for me - but one thing I left out - you need to set the cancel buttons 'causes validation' to false. Also note that the "trick" to closing the form is not keeping a seperate "canceling" flag, but to put "e.cancel=False" in the forms closing event.The following code works as you might hope: Public Class Form1 Private m Canceling As Boolean = False Private Sub Button1_Click(By Val sender As System. -- Terry "Al Reid" wrote: Ok, I remember now, you are using a modal msgbox in your validation code. If you were using an errorprovider, then the error would be set, the focus would be returned to the textbox, the form closing event would then fire and it changes the cancel flag to false and the form closes.Place an errorprovider control on the form (it is not a visible control).As per my mock up to the left, my best case scenario was to start users in the Text Box control and have them to type in a value and tab to the Combo Box control.( Unless I'm reading it wrong, it describes the problem exactly, but the solution doesn't work. Remember to set to false the Causes Validation = false of the exit button Also you can put it in the mouse down even or Closing Form Event, any event that triggers before the validating event. IT is so annoying working with MS buggy implementation.I took what you all had here and made some adjustments.