|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Exception Error When Calling Procedure Multiple Timese.g. 1x2g Syringe, 15x100g jar etc. The code will then display string output in a label, listing the products that have a quanitity of greater than 0. This works fine. Now what I wanted to do is that each time a quanitity text box is changed the form would refresh the string output. I have done this by calling the procedure (which outputs the string output) many times for each quantity box's EventChanged event Here's the procedure which outputs the string output (there are many more 'gram' variables but they're all similar so i didn't include them): Public Sub PackingOutput() Dim totalgram As String Dim gram2 As String Dim gram5 As String Dim gram10 As String Dim num_txt2g As Integer Dim num_txt5g As Integer Dim num_txt10g As Integer num_txt2g = CInt(txt2g.Text) If num_txt2g > 0 Then gram2 = num_txt2g & " " & lbl2g.Text & ", " End If num_txt5g = CInt(txt5g.Text) If num_txt5g > 0 Then gram5 = num_txt5g & " " & lbl5g.Text & ", " End If num_txt10g = CInt(txt10g.Text) If num_txt10g > 0 Then gram10 = num_txt10g & " " & lbl10g.Text & ", " End If totalgram = gram2 & gram5 & gram10 lblPackingOutput2.Text = totalgram And here's an example of the EventChanged events: Private Sub txt2g_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt2g.TextChanged Call PackingOutput() End Sub Private Sub txt5g_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt5g.TextChanged Call PackingOutput() End Sub Private Sub txt10g_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt10g.TextChanged Call PackingOutput() End Sub The problem is when I just have txt2g_TextChanged it works fine, but if I have more than one sub calling the same procedure I get "an unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll. Addition information: Cast from string "" to type 'Integer' is not valid" Anyone know how to fix? Hi,
<aziz***@googlemail.com> schrieb im Newsbeitrag news:1141825322.846366.13970@j33g2000cwa.googlegroups.com... your PackingOutput Sub tries to convert the given texts to integer without > The problem is when I just have txt2g_TextChanged it works fine, but if > I have more than one sub calling the same procedure I get "an unhandled > exception of type 'System.InvalidCastException' occurred in > microsoft.visualbasic.dll. Addition information: Cast from string "" to > type 'Integer' is not valid" checking if the values in these boxes are numeric. It looks a at least one text box contained an empty string and the CInt function can't convert this empty string to an integer... just a first gues.. Josef The problem is not really that you are calling the procedure multiple
times. 'Cast from string "" to type 'Integer' is not valid' - means that at some point one of txt2g.text txt5g.text txt10g.text contains "" 1) put in some checking in PackingOutput() for empty strings 2) If the only thing that you are doing is calling PackingOutput, then you can use the one handler for all events Private Sub HandleTextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt2g.TextChanged, txt5g.TextChanged, txt10g.TextChanged PackingOutput() End Sub hth, Alan. I've checked the text boxes and they all have '0' in them when the
program is initialised. Also before doing anything with them (i.e. comparison) I always convert the text '0' to an integer using Cint. Also if I uncomment any of the other .... num_txt2g = CInt(txt2g.Text) If num_txt2g > 0 Then gram2 = num_txt2g & " " & lbl2g.Text & ", " End If .... type of commands, same error comes up. It's only if I have the first one that the program works. I'm totally stumped. I've uploaded the entire form here http://rapidshare.de/files/15005081/packingoptions.zip.html in case anyone can help. Try changing the Debug/Exception settings for 'Common Language Runtime
Exceptions' to Break into the Debugger when an exception is thrown (it is usually set to Continue). This will stop the program at the point where the exception occurs and you can check the values in the various textboxes at that point. Another option... add a Trace.Writeline() for each textbox value before calling CInt to see what the value is. hth, Alan.
Adding button programatically - NON-FUNCTIONAL!!
Checking for new versions in a setup project Can a console VB.NET prog return a value to caller? Garbage collection and callbacks from unmanaged code. Help with strings. Error on Graphics CompositingMode.SourceCopy Numeric Variables converting from combobox.text to long() Preventing Explorer Window from Displaying when Pen Drive Inserted Getting Extended File Properties |
|||||||||||||||||||||||