如何为此做一个循环
How to make a loop for this
If NUD_Pepperoni.Value > 0 Then
txtSummary.AppendText(vbNewLine + "Pepperoni" + vbTab & vbTab & NUD_Pepperoni.Text + vbTab & price.ToString("c1") + vbTab + vbTab & (NUD_Pepperoni.Value * price).ToString("c1") + vbNewLine)
End If
If NUD_Hawaiian.Value > 0 Then
txtSummary.AppendText(vbNewLine + "Hawaiian" + vbTab & vbTab & vbTab & NUD_Hawaiian.Text + vbTab & price.ToString("c1") + vbTab + vbTab & (NUD_Hawaiian.Value * price).ToString("c1") + vbNewLine)
End If
If NUD_Americano.Value > 0 Then
txtSummary.AppendText(vbNewLine + "Americano" + vbTab & vbTab & NUD_Americano.Text + vbTab & price.ToString("c1") + vbTab + vbTab & (NUD_Americano.Value * price).ToString("c1") + vbNewLine)
End If
有12个相同
下面的代码是我存储的值
Dim Pizzalist(11, 1) As Single
============================================= ===================
For p = 0 To 5
Pizzalist(p, 0) = 8.5 'store the regular pizza Price
Next
For p = 6 To 11
Pizzalist(p, 0) = 13.5 'store the gourmet pizza price
Next
============================================= ===================
Pizzalist(0, 1) = NUD_Pepperoni.Value
Pizzalist(1, 1) = NUD_Hawaiian.Value
Pizzalist(2, 1) = NUD_Americano.Value
Pizzalist(3, 1) = NUD_TacoFiesta.Value
Pizzalist(4, 1) = NUD_Margherita.Value
Pizzalist(5, 1) = NUD_BeefOnion.Value
Pizzalist(6, 1) = NUD_BNY.Value
Pizzalist(7, 1) = NUD_MML.Value
Pizzalist(8, 1) = NUD_IL.Value
Pizzalist(9, 1) = NUD_GSS.Value
Pizzalist(10, 1) = NUD_AC.Value
Pizzalist(11, 1) = NUD_TMC.Value'store the amount of specific pizza
我查阅了很多例子试图找出如何做到这一点,但我做不到。谢谢!
如果您有一个 class,其中包含与披萨相关的信息,我们称之为 Pizza
,您可以创建一个 List(Of Pizza)
。一旦输入了数据,就可以迭代该列表,例如,如果用户单击按钮来计算价格。
Public Class Form1
Dim pizzas As New List(Of Pizza)
Public Class Pizza
Public Property QuantitySelector As NumericUpDown
Public Property UnitPrice As Decimal
Public Property Name As String
Public ReadOnly Property Quantity As Integer
Get
Return Convert.ToInt32(QuantitySelector.Value)
End Get
End Property
Sub New()
' Empty constructor
End Sub
Sub New(name As String, quantitySelector As NumericUpDown, unitPrice As Decimal)
Me.QuantitySelector = quantitySelector
Me.UnitPrice = unitPrice
Me.Name = name
End Sub
End Class
Private Sub bnCalcPrice_Click(sender As Object, e As EventArgs) Handles bnCalcPrice.Click
Dim sb As New Text.StringBuilder
For Each pz In pizzas
If pz.Quantity > 0 Then
sb.Append(vbNewLine & pz.Name & vbTab & vbTab & pz.Quantity & vbTab & pz.UnitPrice.ToString("c1") & vbTab & vbTab & (pz.Quantity * pz.UnitPrice).ToString("c1") & vbNewLine)
End If
Next
txtSummary.Text = sb.ToString()
End Sub
Private Sub InitPizzas()
Dim regularPrice = 8.5D ' Use Decimal values for money.
Dim premiumPrice = 13.5D
pizzas.Add(New Pizza("Hawaiian", NUD_Hawaiian, premiumPrice))
pizzas.Add(New Pizza("Americano", NUD_Americano, premiumPrice))
' etc.
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
InitPizzas()
End Sub
End Class
您也可以添加代码以将每种披萨的单独价格相加。
我还为您创建了一个解决方案。安德鲁在我忙碌的同时回复了你,但我不想隐瞒你。
正如安德鲁所说,我会改变整个概念。我写了一个 class ,其中包含披萨最重要的属性。您可以在餐厅厨房更改金额。数据保存在List(of ClassPizza)
中。正如安德鲁所说,您然后可以遍历此列表并利用这些属性。例如按 属性 xy 排序。也许是最佳食用日期?
您可以将数据保存在文本文件中。 (当然,它可以做得更好/不同,但我们今天不想夸大其词)。这些数据在程序启动时被读入。 (第一次当然没有数据,直接在OpenfileDialog里点取消)
当新商品到达时,您可以单击“将新比萨饼进店”按钮并输入所有内容。为此打开第二个表格。注意确保没有输入错误(例如,数量 0 没有意义 – 文本随后变为红色)。
当前股票显示在12个文本框中。
这是Form1.vb:
Imports Microsoft.VisualBasic.ControlChars
Imports Microsoft.WindowsAPICodePack.Dialogs
Public NotInheritable Class FormMain
Private ReadOnly Deu As New System.Globalization.CultureInfo("de-DE") ' change this to your language, for example "en-GB"
Private ReadOnly All_my_pizzas_List As New List(Of ClassPizza)
Private Sub FormMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each tb As TextBox In Me.Controls.OfType(Of TextBox)
tb.Text = "0"
Next
End Sub
Private Sub FormMain_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Dim Path As String
Using OFD1 As New CommonOpenFileDialog
OFD1.Title = "pick file to open"
OFD1.Filters.Add(New CommonFileDialogFilter("Text file", ".txt"))
OFD1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
If OFD1.ShowDialog() = CommonFileDialogResult.Ok Then
Path = OFD1.FileName
Else
Return
End If
End Using
'read all Text
Dim RAT() As String = System.IO.File.ReadAllLines(Path, System.Text.Encoding.UTF8)
If RAT.Length = 0 Then Return
For i As Integer = 1 To RAT.Length - 3 Step 1
If RAT(i) = "#" Then
All_my_pizzas_List.Add(New ClassPizza(CType(RAT(i + 1), ClassPizza.Types_of_pizza), CUShort(RAT(i + 2)), CDec(RAT(i + 3))))
End If
Next
Update_Textboxes()
End Sub
Private Sub Update_Textboxes()
Dim NUD_Pepperoni, NUD_Hawaiian, NUD_Americano, NUD_TacoFiesta, NUD_Margherita, NUD_BeefOnion, NUD_BNY, NUD_MML, NUD_IL, NUD_GSS, NUD_AC, NUD_TMC As Integer
For Each piz As ClassPizza In All_my_pizzas_List
Select Case piz.Type_of_pizza
Case ClassPizza.Types_of_pizza.NUD_Pepperoni
NUD_Pepperoni += 1
Case ClassPizza.Types_of_pizza.NUD_Hawaiian
NUD_Hawaiian += 1
Case ClassPizza.Types_of_pizza.NUD_Americano
NUD_Americano += 1
Case ClassPizza.Types_of_pizza.NUD_TacoFiesta
NUD_TacoFiesta += 1
Case ClassPizza.Types_of_pizza.NUD_Margherita
NUD_Margherita += 1
Case ClassPizza.Types_of_pizza.NUD_BeefOnion
NUD_BeefOnion += 1
Case ClassPizza.Types_of_pizza.NUD_BNY
NUD_BNY += 1
Case ClassPizza.Types_of_pizza.NUD_MML
NUD_MML += 1
Case ClassPizza.Types_of_pizza.NUD_IL
NUD_IL += 1
Case ClassPizza.Types_of_pizza.NUD_GSS
NUD_GSS += 1
Case ClassPizza.Types_of_pizza.NUD_AC
NUD_AC += 1
Case ClassPizza.Types_of_pizza.NUD_TMC
NUD_TMC += 1
Case Else
Exit Select
End Select
Next
TextBox_Pepperoni.Text = NUD_Pepperoni.ToString(Deu)
TextBox_Hawaiian.Text = NUD_Hawaiian.ToString(Deu)
TextBox_Americano.Text = NUD_Americano.ToString(Deu)
TextBox_TacoFiesta.Text = NUD_TacoFiesta.ToString(Deu)
TextBox_Margherita.Text = NUD_Margherita.ToString(Deu)
TextBox_BeefOnion.Text = NUD_BeefOnion.ToString(Deu)
TextBox_BNY.Text = NUD_BNY.ToString(Deu)
TextBox_MML.Text = NUD_MML.ToString(Deu)
TextBox_IL.Text = NUD_IL.ToString(Deu)
TextBox_GSS.Text = NUD_GSS.ToString(Deu)
TextBox_AC.Text = NUD_AC.ToString(Deu)
TextBox_TMC.Text = NUD_TMC.ToString(Deu)
End Sub
Private Sub Button_toStore_Click(sender As Object, e As EventArgs) Handles Button_toStore.Click
Using FNP As New Form_new_pizza
FNP.GetData()
If FNP.ShowDialog = DialogResult.Yes Then
For i As UInt16 = 0US To FNP.Amount - 1US Step 1US
All_my_pizzas_List.Add(New ClassPizza(CType(FNP.SI, ClassPizza.Types_of_pizza), 1US, FNP.price))
Next
End If
End Using
Update_Textboxes()
End Sub
Private Sub Button_change_values_Click(sender As Object, e As EventArgs) Handles Button_change_values.Click
' this is still empty
End Sub
Private Sub Button_Save_Click(sender As Object, e As EventArgs) Handles Button_Save.Click
'-------------------------------------------------------------------------------------------------------------
' User can choose where to save the database text file and the program will save it.
'-------------------------------------------------------------------------------------------------------------
Dim Path As String
Using SFD1 As New CommonSaveFileDialog
SFD1.Title = "write data into text file"
SFD1.Filters.Add(New CommonFileDialogFilter("Text file", ".txt"))
SFD1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
If SFD1.ShowDialog() = CommonFileDialogResult.Ok Then
Path = SFD1.FileName & ".txt"
Else
Return
End If
End Using
Using textfile As System.IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(Path, True, System.Text.Encoding.UTF8)
textfile.WriteLine("Status of this file [dd.mm.yyyy hh:mm:ss]: " & Date.Now.ToString("G", Deu))
For Each pizza As ClassPizza In All_my_pizzas_List
textfile.WriteLine("#") ' Marker
textfile.WriteLine(pizza.Type_of_pizza)
textfile.WriteLine(pizza.stored_amount)
textfile.WriteLine(pizza.price)
Next
textfile.Close()
End Using
End Sub
End Class
这是ClassPizza.vb
的代码
Public NotInheritable Class ClassPizza
Public Enum Types_of_pizza
NUD_Pepperoni
NUD_Hawaiian
NUD_Americano
NUD_TacoFiesta
NUD_Margherita
NUD_BeefOnion
NUD_BNY
NUD_MML
NUD_IL
NUD_GSS
NUD_AC
NUD_TMC
End Enum
Public Type_of_pizza As Types_of_pizza
Public stored_amount As UInt16 = 0US
''' <summary>
''' in $
''' </summary>
Public price As Decimal
Public Sub New(ByVal type As Types_of_pizza, ByVal storedAmount As UInt16, price As Decimal)
Me.Type_of_pizza = type
Me.stored_amount = storedAmount
Me.price = price
End Sub
End Class
这是第二个表格的代码 (Form_new_pizza.vb)
Public NotInheritable Class Form_new_pizza
Public Amount As UInt16
Public price As Decimal
Public SI As Integer
Public Sub GetData()
For Each _item As Object In [Enum].GetValues(GetType(ClassPizza.Types_of_pizza))
ListBox1.Items.Add(_item)
Next
End Sub
Private Sub Form_new_pizza_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub TextBox_Amount_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Amount.TextChanged
Dim success As Boolean = UInt16.TryParse(TextBox_Amount.Text, Amount)
If success AndAlso Amount > 0US Then
TextBox_Amount.ForeColor = Color.FromArgb(0, 200, 0) 'Green
Else
TextBox_Amount.ForeColor = Color.Red
End If
End Sub
Private Sub TextBox_price_TextChanged(sender As Object, e As EventArgs) Handles TextBox_price.TextChanged
Dim success As Boolean = Decimal.TryParse(TextBox_price.Text, price)
If success Then
TextBox_price.ForeColor = Color.FromArgb(0, 200, 0) 'Green
Else
TextBox_price.ForeColor = Color.Red
End If
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
If ListBox1.SelectedIndex <> (-1) Then
SI = ListBox1.SelectedIndex
End If
End Sub
Private Sub Button_OK_Click(sender As Object, e As EventArgs) Handles Button_OK.Click
If SI <> (-1) AndAlso Amount > 0US Then
Me.DialogResult = DialogResult.Yes
Else
Me.DialogResult = DialogResult.No
End If
End Sub
End Class
当然,任何人都可以扩展并做得比我好,但是你可以开始,理解这个概念。
顺便说一下
您应该在项目属性中将“Option Strict”设置为On
,以便建议您转换数据类型。还要将“Option Infer”设置为 Off
,以便您始终必须记下数据类型(“As Integer”、“As Double”……)。然而,后者是一个品味问题。
此外,您应该删除 VB6 命名空间,因为 VB6 功能已弃用。
如果需要控制字符(比如NewLine),可以写Imports Microsoft.VisualBasic.ControlChars
.
====================================
请注意,我使用的是从 Visual Studios 自己的 Nuget 包管理器下载的 FileDialog。见图像。您不必这样做,但我更喜欢这个 FileDialog,因为它提供的选项比已经包含的选项更多。
If NUD_Pepperoni.Value > 0 Then
txtSummary.AppendText(vbNewLine + "Pepperoni" + vbTab & vbTab & NUD_Pepperoni.Text + vbTab & price.ToString("c1") + vbTab + vbTab & (NUD_Pepperoni.Value * price).ToString("c1") + vbNewLine)
End If
If NUD_Hawaiian.Value > 0 Then
txtSummary.AppendText(vbNewLine + "Hawaiian" + vbTab & vbTab & vbTab & NUD_Hawaiian.Text + vbTab & price.ToString("c1") + vbTab + vbTab & (NUD_Hawaiian.Value * price).ToString("c1") + vbNewLine)
End If
If NUD_Americano.Value > 0 Then
txtSummary.AppendText(vbNewLine + "Americano" + vbTab & vbTab & NUD_Americano.Text + vbTab & price.ToString("c1") + vbTab + vbTab & (NUD_Americano.Value * price).ToString("c1") + vbNewLine)
End If
有12个相同
下面的代码是我存储的值
Dim Pizzalist(11, 1) As Single
============================================= ===================
For p = 0 To 5
Pizzalist(p, 0) = 8.5 'store the regular pizza Price
Next
For p = 6 To 11
Pizzalist(p, 0) = 13.5 'store the gourmet pizza price
Next
============================================= ===================
Pizzalist(0, 1) = NUD_Pepperoni.Value
Pizzalist(1, 1) = NUD_Hawaiian.Value
Pizzalist(2, 1) = NUD_Americano.Value
Pizzalist(3, 1) = NUD_TacoFiesta.Value
Pizzalist(4, 1) = NUD_Margherita.Value
Pizzalist(5, 1) = NUD_BeefOnion.Value
Pizzalist(6, 1) = NUD_BNY.Value
Pizzalist(7, 1) = NUD_MML.Value
Pizzalist(8, 1) = NUD_IL.Value
Pizzalist(9, 1) = NUD_GSS.Value
Pizzalist(10, 1) = NUD_AC.Value
Pizzalist(11, 1) = NUD_TMC.Value'store the amount of specific pizza
我查阅了很多例子试图找出如何做到这一点,但我做不到。谢谢!
如果您有一个 class,其中包含与披萨相关的信息,我们称之为 Pizza
,您可以创建一个 List(Of Pizza)
。一旦输入了数据,就可以迭代该列表,例如,如果用户单击按钮来计算价格。
Public Class Form1
Dim pizzas As New List(Of Pizza)
Public Class Pizza
Public Property QuantitySelector As NumericUpDown
Public Property UnitPrice As Decimal
Public Property Name As String
Public ReadOnly Property Quantity As Integer
Get
Return Convert.ToInt32(QuantitySelector.Value)
End Get
End Property
Sub New()
' Empty constructor
End Sub
Sub New(name As String, quantitySelector As NumericUpDown, unitPrice As Decimal)
Me.QuantitySelector = quantitySelector
Me.UnitPrice = unitPrice
Me.Name = name
End Sub
End Class
Private Sub bnCalcPrice_Click(sender As Object, e As EventArgs) Handles bnCalcPrice.Click
Dim sb As New Text.StringBuilder
For Each pz In pizzas
If pz.Quantity > 0 Then
sb.Append(vbNewLine & pz.Name & vbTab & vbTab & pz.Quantity & vbTab & pz.UnitPrice.ToString("c1") & vbTab & vbTab & (pz.Quantity * pz.UnitPrice).ToString("c1") & vbNewLine)
End If
Next
txtSummary.Text = sb.ToString()
End Sub
Private Sub InitPizzas()
Dim regularPrice = 8.5D ' Use Decimal values for money.
Dim premiumPrice = 13.5D
pizzas.Add(New Pizza("Hawaiian", NUD_Hawaiian, premiumPrice))
pizzas.Add(New Pizza("Americano", NUD_Americano, premiumPrice))
' etc.
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
InitPizzas()
End Sub
End Class
您也可以添加代码以将每种披萨的单独价格相加。
我还为您创建了一个解决方案。安德鲁在我忙碌的同时回复了你,但我不想隐瞒你。
正如安德鲁所说,我会改变整个概念。我写了一个 class ,其中包含披萨最重要的属性。您可以在餐厅厨房更改金额。数据保存在List(of ClassPizza)
中。正如安德鲁所说,您然后可以遍历此列表并利用这些属性。例如按 属性 xy 排序。也许是最佳食用日期?
您可以将数据保存在文本文件中。 (当然,它可以做得更好/不同,但我们今天不想夸大其词)。这些数据在程序启动时被读入。 (第一次当然没有数据,直接在OpenfileDialog里点取消)
当新商品到达时,您可以单击“将新比萨饼进店”按钮并输入所有内容。为此打开第二个表格。注意确保没有输入错误(例如,数量 0 没有意义 – 文本随后变为红色)。
当前股票显示在12个文本框中。
这是Form1.vb:
Imports Microsoft.VisualBasic.ControlChars
Imports Microsoft.WindowsAPICodePack.Dialogs
Public NotInheritable Class FormMain
Private ReadOnly Deu As New System.Globalization.CultureInfo("de-DE") ' change this to your language, for example "en-GB"
Private ReadOnly All_my_pizzas_List As New List(Of ClassPizza)
Private Sub FormMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each tb As TextBox In Me.Controls.OfType(Of TextBox)
tb.Text = "0"
Next
End Sub
Private Sub FormMain_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Dim Path As String
Using OFD1 As New CommonOpenFileDialog
OFD1.Title = "pick file to open"
OFD1.Filters.Add(New CommonFileDialogFilter("Text file", ".txt"))
OFD1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
If OFD1.ShowDialog() = CommonFileDialogResult.Ok Then
Path = OFD1.FileName
Else
Return
End If
End Using
'read all Text
Dim RAT() As String = System.IO.File.ReadAllLines(Path, System.Text.Encoding.UTF8)
If RAT.Length = 0 Then Return
For i As Integer = 1 To RAT.Length - 3 Step 1
If RAT(i) = "#" Then
All_my_pizzas_List.Add(New ClassPizza(CType(RAT(i + 1), ClassPizza.Types_of_pizza), CUShort(RAT(i + 2)), CDec(RAT(i + 3))))
End If
Next
Update_Textboxes()
End Sub
Private Sub Update_Textboxes()
Dim NUD_Pepperoni, NUD_Hawaiian, NUD_Americano, NUD_TacoFiesta, NUD_Margherita, NUD_BeefOnion, NUD_BNY, NUD_MML, NUD_IL, NUD_GSS, NUD_AC, NUD_TMC As Integer
For Each piz As ClassPizza In All_my_pizzas_List
Select Case piz.Type_of_pizza
Case ClassPizza.Types_of_pizza.NUD_Pepperoni
NUD_Pepperoni += 1
Case ClassPizza.Types_of_pizza.NUD_Hawaiian
NUD_Hawaiian += 1
Case ClassPizza.Types_of_pizza.NUD_Americano
NUD_Americano += 1
Case ClassPizza.Types_of_pizza.NUD_TacoFiesta
NUD_TacoFiesta += 1
Case ClassPizza.Types_of_pizza.NUD_Margherita
NUD_Margherita += 1
Case ClassPizza.Types_of_pizza.NUD_BeefOnion
NUD_BeefOnion += 1
Case ClassPizza.Types_of_pizza.NUD_BNY
NUD_BNY += 1
Case ClassPizza.Types_of_pizza.NUD_MML
NUD_MML += 1
Case ClassPizza.Types_of_pizza.NUD_IL
NUD_IL += 1
Case ClassPizza.Types_of_pizza.NUD_GSS
NUD_GSS += 1
Case ClassPizza.Types_of_pizza.NUD_AC
NUD_AC += 1
Case ClassPizza.Types_of_pizza.NUD_TMC
NUD_TMC += 1
Case Else
Exit Select
End Select
Next
TextBox_Pepperoni.Text = NUD_Pepperoni.ToString(Deu)
TextBox_Hawaiian.Text = NUD_Hawaiian.ToString(Deu)
TextBox_Americano.Text = NUD_Americano.ToString(Deu)
TextBox_TacoFiesta.Text = NUD_TacoFiesta.ToString(Deu)
TextBox_Margherita.Text = NUD_Margherita.ToString(Deu)
TextBox_BeefOnion.Text = NUD_BeefOnion.ToString(Deu)
TextBox_BNY.Text = NUD_BNY.ToString(Deu)
TextBox_MML.Text = NUD_MML.ToString(Deu)
TextBox_IL.Text = NUD_IL.ToString(Deu)
TextBox_GSS.Text = NUD_GSS.ToString(Deu)
TextBox_AC.Text = NUD_AC.ToString(Deu)
TextBox_TMC.Text = NUD_TMC.ToString(Deu)
End Sub
Private Sub Button_toStore_Click(sender As Object, e As EventArgs) Handles Button_toStore.Click
Using FNP As New Form_new_pizza
FNP.GetData()
If FNP.ShowDialog = DialogResult.Yes Then
For i As UInt16 = 0US To FNP.Amount - 1US Step 1US
All_my_pizzas_List.Add(New ClassPizza(CType(FNP.SI, ClassPizza.Types_of_pizza), 1US, FNP.price))
Next
End If
End Using
Update_Textboxes()
End Sub
Private Sub Button_change_values_Click(sender As Object, e As EventArgs) Handles Button_change_values.Click
' this is still empty
End Sub
Private Sub Button_Save_Click(sender As Object, e As EventArgs) Handles Button_Save.Click
'-------------------------------------------------------------------------------------------------------------
' User can choose where to save the database text file and the program will save it.
'-------------------------------------------------------------------------------------------------------------
Dim Path As String
Using SFD1 As New CommonSaveFileDialog
SFD1.Title = "write data into text file"
SFD1.Filters.Add(New CommonFileDialogFilter("Text file", ".txt"))
SFD1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
If SFD1.ShowDialog() = CommonFileDialogResult.Ok Then
Path = SFD1.FileName & ".txt"
Else
Return
End If
End Using
Using textfile As System.IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(Path, True, System.Text.Encoding.UTF8)
textfile.WriteLine("Status of this file [dd.mm.yyyy hh:mm:ss]: " & Date.Now.ToString("G", Deu))
For Each pizza As ClassPizza In All_my_pizzas_List
textfile.WriteLine("#") ' Marker
textfile.WriteLine(pizza.Type_of_pizza)
textfile.WriteLine(pizza.stored_amount)
textfile.WriteLine(pizza.price)
Next
textfile.Close()
End Using
End Sub
End Class
这是ClassPizza.vb
的代码Public NotInheritable Class ClassPizza
Public Enum Types_of_pizza
NUD_Pepperoni
NUD_Hawaiian
NUD_Americano
NUD_TacoFiesta
NUD_Margherita
NUD_BeefOnion
NUD_BNY
NUD_MML
NUD_IL
NUD_GSS
NUD_AC
NUD_TMC
End Enum
Public Type_of_pizza As Types_of_pizza
Public stored_amount As UInt16 = 0US
''' <summary>
''' in $
''' </summary>
Public price As Decimal
Public Sub New(ByVal type As Types_of_pizza, ByVal storedAmount As UInt16, price As Decimal)
Me.Type_of_pizza = type
Me.stored_amount = storedAmount
Me.price = price
End Sub
End Class
这是第二个表格的代码 (Form_new_pizza.vb)
Public NotInheritable Class Form_new_pizza
Public Amount As UInt16
Public price As Decimal
Public SI As Integer
Public Sub GetData()
For Each _item As Object In [Enum].GetValues(GetType(ClassPizza.Types_of_pizza))
ListBox1.Items.Add(_item)
Next
End Sub
Private Sub Form_new_pizza_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub TextBox_Amount_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Amount.TextChanged
Dim success As Boolean = UInt16.TryParse(TextBox_Amount.Text, Amount)
If success AndAlso Amount > 0US Then
TextBox_Amount.ForeColor = Color.FromArgb(0, 200, 0) 'Green
Else
TextBox_Amount.ForeColor = Color.Red
End If
End Sub
Private Sub TextBox_price_TextChanged(sender As Object, e As EventArgs) Handles TextBox_price.TextChanged
Dim success As Boolean = Decimal.TryParse(TextBox_price.Text, price)
If success Then
TextBox_price.ForeColor = Color.FromArgb(0, 200, 0) 'Green
Else
TextBox_price.ForeColor = Color.Red
End If
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
If ListBox1.SelectedIndex <> (-1) Then
SI = ListBox1.SelectedIndex
End If
End Sub
Private Sub Button_OK_Click(sender As Object, e As EventArgs) Handles Button_OK.Click
If SI <> (-1) AndAlso Amount > 0US Then
Me.DialogResult = DialogResult.Yes
Else
Me.DialogResult = DialogResult.No
End If
End Sub
End Class
当然,任何人都可以扩展并做得比我好,但是你可以开始,理解这个概念。
顺便说一下
您应该在项目属性中将“Option Strict”设置为On
,以便建议您转换数据类型。还要将“Option Infer”设置为 Off
,以便您始终必须记下数据类型(“As Integer”、“As Double”……)。然而,后者是一个品味问题。
此外,您应该删除 VB6 命名空间,因为 VB6 功能已弃用。
如果需要控制字符(比如NewLine),可以写Imports Microsoft.VisualBasic.ControlChars
.
====================================
请注意,我使用的是从 Visual Studios 自己的 Nuget 包管理器下载的 FileDialog。见图像。您不必这样做,但我更喜欢这个 FileDialog,因为它提供的选项比已经包含的选项更多。