Checkbook Program in VB 2010 - vb.net

I am trying to get my program to have the ability to do multiple transactions in a row. Here is my code I have so far:
Public Class checkbook
Dim transAmount As Decimal
Dim newBalance As Decimal
Dim Balance As Decimal
Dim deposit As Decimal
Dim check As Decimal
Dim service As Decimal
Private Sub ExitButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExitButton.Click
Me.Close()
End Sub
Private Sub AboutButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles AboutButton.Click
MessageBox.Show("Program: Checkbook Version 1.0 Company: JWEED Description: Updates Balance")
End Sub
Private Sub CalcButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CalcButton.Click
Balance = Decimal.Parse(BalanceTextBox.Text)
transAmount = Decimal.Parse(AmountTextBox1.Text)
If DepositRadioButton.Checked Then
deposit = (Balance + transAmount)
Balance = deposit
ElseIf CheckRadioButton.Checked Then
check = Balance - transAmount
If check < 0 Then
check = check - 10
MessageBox.Show("Error: Negavtive Balance")
Balance = check
ElseIf check > 0 Then
Balance = check
End If
ElseIf ServiceRadioButton.Checked Then
service = Balance - (10 + transAmount)
Balance = service
End If
BalanceTextBox.Text = Balance.ToString("C")
AmountTextBox1.Text = transAmount.ToString("C")
End Sub
End Class
It tells me that there is an format issue with my balance after I do the first transaction and try to do a second one.

You have format your balance / amount with currency symbol, as so, please try to change following lines:
Balance = Decimal.Parse(BalanceTextBox.Text, NumberStyles.Currency)
transAmount = Decimal.Parse(AmountTextBox1.Text, NumberStyles.Currency)
Moreover, I would suggest you to init 2 values with Currency too
Reference: Problem parsing currency text to decimal type

Related

How do I multiply a user's text by an array item selected from a menu?

I'm trying to write a gross pay calculator, and can't quite get the coding right to multiply the user entered number by the selected pay rate.
Everything I try based off tweaking other project's code to fit my current project just returns errors.
Private strCode(,) As String = {{“P23”, “10.5”},
{“P56”, “12.5”},
{“F45”, “14.25”},
{“F68”, “15.75”},
{“F96”, “17.65”}}
Private Sub txtHours_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtHours.KeyPress
' Accept only numbers, the period, and the Backspace key.
If (e.KeyChar < "0" OrElse e.KeyChar > "9") AndAlso e.KeyChar <> "." AndAlso e.KeyChar <> ControlChars.Back Then
e.Handled = True
End If
End Sub
Private Sub BtnCal_click(sender As Object, e As EventArgs) Handles btnCalc.Click
Const V As strCodes(,)(,)
Dim txtHours As Decimal = txtHours.text
lblGross.Text = {{txtHours.Text} * {lstCodes.SelectedIndex}}
End Sub
Whether I declare the txtHours as double, decimal, it always returns the error that it can't be converted. The bottom portion of the code is non-working, but is essentially what I need to happen with this code.
I would expect to see something more like:
Private Sub BtnCal_click(sender As Object, e As EventArgs) Handles btnCalc.Click
If lstCodes.SelectedIndex <> -1 Then
Dim quantity, rate As Double
If Double.TryParse(txtHours.Text, quantity) AndAlso Double.TryParse(lstCodes.SelectedItem, rate) Then
Dim price As Double = quantity * rate
lblGross.Text = price
Else
MessageBox.Show("Invalid Quantity and/or Rate!")
End If
Else
MessageBox.Show("No Rate Selected!")
End If
End Sub
I created a structure to hold your data. A list of the type of structure then can keep the data and a List(Of T) can be bound to a list box. The display and value members are set to the properties of the structure. When an item is selected in the list box we can get the .SelectedValue and use it in the calculation.
Public Structure PayRate
Public Property RateClass As String
Public Property PayRate As Decimal
Public Sub New(rClass As String, pRate As Decimal)
RateClass = rClass
PayRate = pRate
End Sub
End Structure
Private PayRates As New List(Of PayRate)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PayRates.Add(New PayRate(“P56”, 12.5D))
PayRates.Add(New PayRate(“F45”, 14.25D))
PayRates.Add(New PayRate(“F68”, 15.75D))
PayRates.Add(New PayRate(“F96”, 17.65D))
ListBox1.DataSource = PayRates
ListBox1.DisplayMember = "RateClass"
ListBox1.ValueMember = "PayRate"
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Hours As Decimal
If Decimal.TryParse(TextBox1.Text, Hours) Then
Label1.Text = (Hours * CDec(ListBox1.SelectedValue)).ToString("000.00")
Else
MessageBox.Show("Please enter a valid number in Hours box.")
End If
End Sub

I am working on vb.net and basic thing which I am doing is Deposit and withdraw of amounts

So If txtFirstName.Text = String.Empty And
txtLastName.Text = String.Empty And
txtAmount.Text = String.Empty Then
MsgBox("Please enter Information")
this part doesnt work at all, when i tried keeping the breakpoint and look at how it is working, It came out true but the msgbox was never shown.
and the deposit and withdraw functions work as strings.
Also I want to know How I can keep my code in different class and use it in this class for deposit and withdraw buttons.
Here is the code that I wrote:
Option Strict On
Option Explicit On
Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
if not IsPostBack then
lblFirstName.Focus()
End Sub
Protected Sub btnConfirm_click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnConfirm.Click
If txtFirstName.Text = String.Empty And
txtLastName.Text = String.Empty And
txtAmount.Text = String.Empty Then
MsgBox("Please enter Information")
Else
doConfirm()
End If
End Sub
Private Sub doConfirm()
If rbtndeposit.Checked Then
txtBalance.Text += (txtAmount.Text)
ElseIf rbtnWithdraw.Checked Then
if txtAmount.text <= txtBalance.text then
txtBalance.text -= txtAmount.text
else
msgBox("Funds not sufficient")
End If
End If
End Sub
End Class
Firstly,Your logic with your text input is a bit flawed, the AND should be OrElse:
Protected Sub btnConfirm_click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnConfirm.Click
If txtFirstName.Text.Length < 1 OrElse _
txtLastName.Text.Length < 1 OrElse _
txtAmount.Text.Length < 1 Then
MsgBox("Please enter Information")
Else
doConfirm()
End If
End Sub
Secondly, you are trying to do mathematical calculations with text values. Convert your input to the correct data type when doing calculations.
Private Sub doConfirm()
If rbtndeposit.Checked Then
txtBalance.Text = Cstr(Cdbl(txtBalance.Text) + Cdbl(txtAmount.Text))
ElseIf rbtnWithdraw.Checked Then
If CDbl(txtAmount.text) <= Cdbl(txtBalance.text) Then
txtBalance.text = Cstr(Cdbl(txtBalance.text) - Cdbl(txtAmount.text))
Else
msgBox("Funds not sufficient")
End If
End If
End Sub
You should how ever use tryparse to check if the input for the amount is valid or your code will crash when the input is not valid, for example:
Dim amount As Double
If Double.TryParse(txtAmount.text, amount) Then
If rbtndeposit.Checked Then
txtBalance.Text = Cstr(Cdbl(txtBalance.Text) + amount)
ElseIf rbtnWithdraw.Checked Then
If amount <= Cdbl(txtBalance.text) then
txtBalance.text = Cstr(Cdbl(txtBalance.text) - amount)
else
msgBox("Funds not sufficient")
End If
End If
Else
MessageBox.Show("Invalid amount entered.")
End if
As for storing your procedure is a separate class, I think just creating functions should be sufficient:
Private Sub Button1_WithDraw(sender As Object, e As EventArgs) Handles Button1_WithDraw.Click
txtBalance.Text = Withdraw(CDbl(txtAmount.Text), Cdbl(txtBalance.text)).ToString
End Sub
Private Function Withdraw(ByVal Amount As Double, ByVal Balance As Double) As Double
Balance = Balance - Amount
Return Balance
End Function

Not Calculating or Showing MessageBox

I have an assignment I have been working on in VB. I have attached the assignment below:
(I would've attached the image but I cannot because I am a new user)
Assignment Question
(http://i.imgur.com/LPZre2F.jpg)
I have written all of the code but for some reason I cannot get the calculate button to calculate anything. Nor, can I get the messagebox to show in the Calculate button when there is no input in the NameTextBox or the PieceTextBox.
Can someone spot something that I am missing on why this may not be working?
Public Class Form1
'Declare Variables
Dim Pieces As Integer
Dim AmtEar As Decimal
Dim NoPieces As Decimal = 0
Dim totPay As Decimal = 0
Dim avgPay As Decimal = 0.0
'Declare Confirm Message Variable
Dim confirmOpt As DialogResult
Private Sub CalculateButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Try
'Declare constant rates paid out
Const priceRate1 As Decimal = 0.5
Const priceRate2 As Decimal = 0.55
Const priceRate3 As Decimal = 0.6
Const priceRate4 As Decimal = 0.65
'Check the blank fields (name and number of pieces)
If NameTextBox.Text = "" Then
MessageBox.Show("Please Enter Name:")
Else
If PieceTextBox.Text = "" Then
MessageBox.Show("Please Enter Number of Pieces Produced")
Else
'Count number of pieces
NoPieces += 1
'Read number of pieces
Pieces = Integer.Parse(PieceTextBox.Text)
'Use select case for given constraints
'calculate earned amount for each
Select Case Pieces
Case 1 To 199
AmtEar = priceRate1 * Pieces
totPay += AmtEar
Case 200 To 399
AmtEar = priceRate2 * Pieces
totPay += AmtEar
Case 400 To 599
AmtEar = priceRate3 * Pieces
totPay += AmtEar
Case Is >= 600
AmtEar = priceRate4 * Pieces
totPay += AmtEar
Case Else
MessageBox.Show("Number of Pieces Produced Must Be Numeric")
End Select
'Display amount earned
AmtTextBox.Text = AmtEar.ToString("C")
End If
End If
'Exception for wrong input
Catch ex As FormatException
MessageBox.Show("Enter Valid Data", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
Private Sub SummaryButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SummaryButton.Click
'calculates summary total
If (NoPieces >= 1) Then
'calculate and update total pieces, total pay and average pay
avgPay = totPay / NoPieces
TotalProducedTextBox.Text = NoPieces.ToString()
TotlPayTextBox.Text = NoPieces.ToString("C")
AveragePayTextBox.Text = avgPay.ToString("C")
Else
'Otherwise display message
MessageBox.Show("Enter at Least One Employee Data", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Sub
Private Sub ClearButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClearButton.Click
'Clear name and number of pieces
NameTextBox.Clear()
PieceTextBox.Clear()
AmtTextBox.Clear()
End Sub
Private Sub ClearAllButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClearAllButton.Click
'If no data is available
If NoPieces = 0 Then
MessageBox.Show("No Data Available To Delete")
Else
'Confirm option message
confirmOpt = MessageBox.Show("Are You Sure You Want To Delete Summary", "Confirm", MessageBoxButtons.YesNo)
'Check if yes then clear all inputs and totals
If confirmOpt = DialogResult.Yes Then
avgPay = 0
totPay = 0
NoPieces = 0
NameTextBox.Clear()
PieceTextBox.Clear()
AmtTextBox.Clear()
TotalProducedTextBox.Clear()
TotlPayTextBox.Clear()
AveragePayTextBox.Clear()
End If
End If
End Sub
End Class
You are missing the Click-handle for that button.
Change this:
Private Sub CalculateButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
to something like this:
Private Sub CalculateButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CalculateButton.Click

Performing Calculations with Modules in Visual Basic

I am writing a program for my Visual Basic class that is supposed to be able to calculate the final total price for items selected from one list box and added to another. 2 of the items have sales tax that must be added into the final price. The program also has a Module that is supposed to be used to keep record of all taxes and is used to do all tax-related functions.
Here is the most current code.
Option Strict On
Public Class Form1
Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdd.Click
If (txtQuantity.Text = "") Then
MessageBox.Show("Please enter a quantity for the item you selected")
ElseIf Not Integer.TryParse(txtQuantity.Text, CInt(txtQuantity.Text)) Then
MessageBox.Show("The quantity entered is not numeric. Please add a numeric quantity.")
Exit Sub
Else
lstPurchased.Items.Add(txtQuantity.Text & " " & lstSale.Text)
End If
End Sub
Private Sub btnCalculate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCalculate.Click
Dim int As Integer
Dim total As Double = 0
For i As Integer = 0 To lstPurchased.Items.Count - 1
Dim lst() As String = lstPurchased.Items(i).ToString.Split({CChar(" ")}, 2)
Integer.TryParse(lst(0), int)
total += TaxesModule.SalesTax(int, lst(1))
Next
MessageBox.Show(CStr(FormatCurrency(total)))
End Sub
Private Sub btnClear_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnClear.Click
lstPurchased.Items.Clear()
txtQuantity.Clear()
End Sub
End Class
And the most recent code for the module
Option Strict On
Module TaxesModule
Private Const DONUT_TAX As Decimal = CDec(0.083)
Private Const RAISIN_TAX As Decimal = CDec(0.02)
Private Const SS_TAX As Decimal = CDec(0.062) ' <-- you are not using this
Public Function SalesTax(ByVal Quantity As Integer, ByVal item As String) As Double
Dim TotalWithSalesTax As Double
If item = "Wheat Bread" Then
TotalWithSalesTax += (Quantity * 1.15)
ElseIf item = "White Bread" Then
TotalWithSalesTax += (Quantity * 1.05)
ElseIf item = "Donuts" Then
TotalWithSalesTax += (Quantity * (0.5 * DONUT_TAX) + (Quantity * 0.5))
ElseIf item = "Raisins" Then
TotalWithSalesTax += (Quantity * (0.25 * RAISIN_TAX) + (Quantity * 0.25))
End If
Return TotalWithSalesTax
End Function
End Module
As the code is written now, the only problem I'm having is that the TotalWithSalesTax for "Raisins" is not calculating correctly. For example, if I select "Raisins" from the list box and add it with a quantity of 1 to the other list box, the total that is displayed in the message box is $0.00.
I'm starting to think the issue is with the following section of code:
For i As Integer = 0 To lstPurchased.Items.Count - 1
Dim lst() As String = lstPurchased.Items(i).ToString.Split({CChar(" ")}, 2)
Because I have tried making changes such as
For i As Integer = 1 ...
And that caused both Donuts and Raisins to give me a total of $0.00 in the message box. So I'm wondering if maybe how the count is set up is not allowing it to go through the entire list, but I don't know how to fix that?
I'm still really new to Visual Basic, and programming in general really and this is my first time working with modules. Can anybody help me figure out what I'm doing wrong, so I can move onto other parts of the program?
I have modified your code, hope this is what you want. Added comment in the code. Note i have removed all Public variables.
Public Class Form1
Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdd.Click
If (txtQuantity.Text = "") Then
MessageBox.Show("Please enter a quantity for the item you selected")
ElseIf Not Integer.TryParse(txtQuantity.Text, txtQuantity.Text) Then
MessageBox.Show("The quantity entered is not numeric. Please add a numeric quantity.")
Exit Sub
Else
lstPurchased.Items.Add(txtQuantity.Text & " " & lstSale.Text)
End If
End Sub
Private Sub btnCalculate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCalculate.Click
Dim int As Integer
Dim total As Double = 0
'you have to loop through the list to calculate the total
' hope this is what you want
For i As Integer = 0 To lstPurchased.Items.Count - 1
' We split the list item into the quantity and the item name
Dim lst() As String = lstPurchased.Items(i).ToString.Split({CChar(" ")}, 2)
'lst(1) contains the item name
Integer.TryParse(lst(0), int)
total += TaxesModule.SalesTax(int, lst(1))
Next
MessageBox.Show(CStr(FormatCurrency(total)))
End Sub
Private Sub btnClear_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnClear.Click
lstPurchased.Items.Clear()
txtQuantity.Clear()
End Sub
End Class
The module
Module TaxesModule
Private Const DONUT_TAX As Decimal = CDec(0.083)
Private Const RAISIN_TAX As Decimal = CDec(0.02)
Private Const SS_TAX As Decimal = CDec(0.062) ' <-- you are not using this
Public Function SalesTax(ByVal Quantity As Integer, ByVal item As String) As Double
Dim TotalWithSalesTax As Double
If item = "Wheat Bread" Then
TotalWithSalesTax = (Quantity * 1.15)
ElseIf item = "White Bread" Then
TotalWithSalesTax = (Quantity * 1.05)
ElseIf item = "Donuts" Then
TotalWithSalesTax = (Quantity * (0.5 * DONUT_TAX) + (Quantity * 0.5))
ElseIf item = "Raisins" Then
TotalWithSalesTax = (Quantity * (0.25 * RAISIN_TAX) + (Quantity * 0.25))
End If
Return TotalWithSalesTax
End Function
End Module

How to make an inputbox and text file appear in Visual Basic?

I'm making a program that allows users to see information on songs, play an excerpt of them, and purchase selected ones.
And allow users to click the Purchase button to buy the indicated tune.
When checking out:
Users cannot checkout if they have not purchased any tunes, however they can exit the program.
Use an InputBox so that users can enter their sales tax rate. Since users are entering a value, you must perform data validation on their input.
Allow users to cancel the check out process by clicking the InputBox Cancel button.
When the input box is displayed, the textbox should have the focus, and when an incorrect tax value is added, the incorrect value should be cleared and the textbox should have focus again.
Use Write/Writeline to create a purchase order text file named PurchaseOrder.txt that includes the date the file was created and an itemized list of purchases, the subtotal, tax, and total.
When I click on the "Purchase" button of the selected song and click on the "Check Out" button, I get an error that say: "You have not ordered any items". Please refer to the cmdCheckOut_Click subroutine in the code below. I think that's where I'm getting my errors.
Here's the code:
Public Structure musicInfo
<VBFixedString(30)> Public title As String
<VBFixedString(20)> Public artist As String
<VBFixedString(20)> Public genre As String
<VBFixedString(10)> Public duration As String
Public year As Integer
Public price As Double
<VBFixedString(15)> Public songFileName As String
End Structure
Public Const NoOfTunes = 5
Public songs(NoOfTunes - 1) As musicInfo
Option Explicit On
Imports System.IO
Public Class frmTunes
Public index As Integer
Public purchaseCount As Integer
Public purchasePrice(10) As Decimal
Public purchaseTitle(10) As String
Private Sub frmTunes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
FileOpen(1, "music.dat", OpenMode.Random, , , Len(songs(0)))
For i = 0 To NoOfTunes - 1
FileGet(1, songs(i))
Next
FileClose(1)
cmdPrevious.Visible = False
DisplaySong(0)
End Sub
Sub DisplaySong(ByVal i As Int32)
lblTitle.Text = songs(i).title
lblArtist.Text = songs(i).artist
lblGenre.Text = songs(i).genre
lblDuration.Text = songs(i).duration
lblYear.Text = Convert.ToString(songs(i).year)
lblPrice.Text = Convert.ToString(songs(i).price)
End Sub
Private Sub cmdStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStop.Click
My.Computer.Audio.Stop()
End Sub
Private Sub cmdPurchase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPurchase.Click
purchaseTitle(purchaseCount) = lblTitle.Text
purchasePrice(purchaseCount) = Convert.ToDecimal(lblPrice.Text)
purchaseCount = (purchaseCount + 1)
End Sub
Private Sub cmdPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrevious.Click
index = (index - 1)
If (index < 4) Then
cmdNext.Visible = True
End If
If (index = 0) Then
cmdPrevious.Visible = False
End If
DisplaySong(index)
End Sub
Private Sub cmdNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNext.Click
index = (index + 1)
If (index = NoOfTunes - 1) Then
cmdNext.Visible = False
End If
If (index > 0) Then
cmdPrevious.Visible = True
End If
DisplaySong(index)
End Sub
Private Sub cmdPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPlay.Click
My.Computer.Audio.Play(songs(index).songFileName)
End Sub
Private Sub cmdCheckOut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCheckOut.Click
Dim decimal1 As Decimal
Dim decimal3 As Decimal
Dim decimal4 As Decimal
Dim str1 As String = ""
If (Not purchaseCount) Then
MsgBox("You have not ordered any items!", MsgBoxStyle.Exclamation, "Order Error")
Else
Do While ((IsNumeric(str1) Or (Decimal.Compare(decimal3, Decimal.Zero) < 0)) Or (Decimal.Compare(decimal3, (10D)) > 0))
str1 = InputBox("Enter your tax rate as a % between and including 0 - 10:", "Tax Rate", "", -1, -1)
If (str1 <> "") Then
If (Not IsNumeric(str1)) Then
MsgBox("You must enter a numeric tax rate", MsgBoxStyle.Exclamation, "Tax Rate Error")
Else
Dim dec3 As Decimal = Convert.ToDecimal(str1)
If ((Decimal.Compare(decimal3, Decimal.Zero) < 0) Or (Decimal.Compare(decimal3, (10D)) > 0)) Then
MsgBox("You must enter a tax rate between and including 0% - 10%", MsgBoxStyle.Exclamation, "Tax Rate Error")
End If
End If
End If
Loop
Dim StreamWriter As StreamWriter = File.CreateText("PurchaseOrder.txt")
StreamWriter.WriteLine("For Purchases dated: " & DateTime.Now.ToLongDateString())
StreamWriter.WriteLine()
Dim num2 As Integer = (purchaseCount - 1)
Dim num1 As Integer = 0
Do While (num1 <= num2)
StreamWriter.Write(Strings.FormatCurrency(CType(Me.purchasePrice(num1), Decimal) & " "))
StreamWriter.WriteLine(Me.purchaseTitle(num1))
Dim dec1 As Decimal = Decimal.Add(Nothing, Me.purchasePrice(num1))
num1 = (num1 + 1)
Loop
StreamWriter.WriteLine("------")
StreamWriter.WriteLine(Strings.FormatCurrency(CType(decimal1, Decimal) & " Subtotal"))
Dim decimal2 As Decimal = New Decimal(((Convert.ToDouble(decimal3) * 0.01) * Convert.ToDouble(decimal1)))
StreamWriter.WriteLine(Strings.FormatCurrency(CType(decimal2, Decimal) & " Tax"))
StreamWriter.WriteLine("------")
Dim dec4 As Decimal = Decimal.Add(decimal1, decimal2)
StreamWriter.WriteLine(Strings.FormatCurrency(CType(decimal4, Decimal) & " Total"))
MsgBox("Purchase Order has been created", MsgBoxStyle.OkOnly)
StreamWriter.Close()
Me.Close()
End If
End Sub
End Class
Not doesn't do what you think it does. In VB.Net the Not operator performs a bitwise invert on non-boolean value. So if purchaseCount = 1 then Not purchaseCount = 0xFFFFFFFE = -2, which with convert to True. Only an integer value of 0, whould convert to false.
Change the test If (Not purchaseCount) to If (purchaseCount = 0)