From 73836287366af81f0407d411162bc5f48e0cefde Mon Sep 17 00:00:00 2001 From: Syndamia Date: Fri, 5 Mar 2021 15:03:15 +0200 Subject: Reworked catalog project business logic with OOP, data binding and event handling in mind --- VB.Net Projects/catalog/catalog/Form1.Designer.vb | 9 +-- VB.Net Projects/catalog/catalog/Form1.vb | 81 ++++++++--------------- VB.Net Projects/catalog/catalog/Product.vb | 13 ++++ 3 files changed, 45 insertions(+), 58 deletions(-) create mode 100644 VB.Net Projects/catalog/catalog/Product.vb (limited to 'VB.Net Projects/catalog') diff --git a/VB.Net Projects/catalog/catalog/Form1.Designer.vb b/VB.Net Projects/catalog/catalog/Form1.Designer.vb index 7337d03..6a85880 100644 --- a/VB.Net Projects/catalog/catalog/Form1.Designer.vb +++ b/VB.Net Projects/catalog/catalog/Form1.Designer.vb @@ -35,6 +35,7 @@ Partial Class Form1 ' 'cbProducts ' + Me.cbProducts.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cbProducts.FormattingEnabled = True Me.cbProducts.Location = New System.Drawing.Point(17, 53) Me.cbProducts.Name = "cbProducts" @@ -64,9 +65,9 @@ Partial Class Form1 Me.lblProductPrice.AutoSize = True Me.lblProductPrice.Location = New System.Drawing.Point(210, 94) Me.lblProductPrice.Name = "lblProductPrice" - Me.lblProductPrice.Size = New System.Drawing.Size(32, 15) + Me.lblProductPrice.Size = New System.Drawing.Size(27, 15) Me.lblProductPrice.TabIndex = 3 - Me.lblProductPrice.Text = "0 лв." + Me.lblProductPrice.Text = "ERR" ' 'btnAddProduct ' @@ -109,9 +110,9 @@ Partial Class Form1 Me.lblSum.AutoSize = True Me.lblSum.Location = New System.Drawing.Point(141, 245) Me.lblSum.Name = "lblSum" - Me.lblSum.Size = New System.Drawing.Size(32, 15) + Me.lblSum.Size = New System.Drawing.Size(27, 15) Me.lblSum.TabIndex = 8 - Me.lblSum.Text = "0 лв." + Me.lblSum.Text = "ERR" ' 'Form1 ' diff --git a/VB.Net Projects/catalog/catalog/Form1.vb b/VB.Net Projects/catalog/catalog/Form1.vb index 71af62b..a7329ae 100644 --- a/VB.Net Projects/catalog/catalog/Form1.vb +++ b/VB.Net Projects/catalog/catalog/Form1.vb @@ -1,65 +1,38 @@ -Public Class Form1 - Dim Sum As Double - Dim Products As String() = { - "Магнитни наколенки", - "Магнитен колан", - "Магни Иър", - "Масажираща седалка", - "Сауна за лице", - "Електрическо одеяло", - "Инфраред масажор за тяло", - "Гривна за баланс", - "Цитрус джусер", - "Апарат за кръвно налягане" +Imports System.ComponentModel + +Public Class Form1 + ReadOnly Products As BindingList(Of Product) = New BindingList(Of Product) From { + New Product("Магнитни наколенки", 59.9), + New Product("Магнитен колан", 39.9), + New Product("Магни Иър", 39.9), + New Product("Масажираща седалка", 59.9), + New Product("Сауна за лице", 49.9), + New Product("Електрическо одеяло", 56.9), + New Product("Инфраред масажор за тяло", 147.0), + New Product("Гривна за баланс", 54.9), + New Product("Цитрус джусер", 49.9), + New Product("Апарат за кръвно налягане", 109.8) } - Dim Prices As Single() = { - 59.9, - 39.9, - 39.9, - 59.9, - 49.9, - 56.9, - 147.0, - 54.9, - 49.9, - 109.8 - } - - Private Function ToCurrency(Optional value As Double = 0) As String - Return FormatCurrency(value, 2) - End Function + ReadOnly ChosenProducts As BindingList(Of Product) = New BindingList(Of Product) Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load - cbProducts.Items.AddRange(Products) - lblSum.Text = ToCurrency() - lblProductPrice.Text = ToCurrency() + cbProducts.DataSource = Products + lbChosenProducts.DataSource = ChosenProducts End Sub - Private Sub cbProducts_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbProducts.SelectedIndexChanged - lblProductPrice.Text = ToCurrency(Prices(cbProducts.SelectedIndex)) - End Sub - - Private Sub btnAddProduct_Click(sender As Object, e As EventArgs) Handles btnAddProduct.Click - If String.IsNullOrEmpty(cbProducts.Text) Then - Return + Private Sub UpdateChosenProducts(sender As Object, e As EventArgs) Handles btnAddProduct.Click, btnRemoveProduct.Click + If DirectCast(sender, Control).Name = btnAddProduct.Name Then + ChosenProducts.Add(Products(cbProducts.SelectedIndex)) + Else + ChosenProducts.Remove(cbProducts.SelectedItem) End If - - lbChosenProducts.Items.Add(cbProducts.Text) - Sum += Prices(cbProducts.SelectedIndex) - lblSum.Text = ToCurrency(Sum) End Sub - Private Sub btnRemoveProduct_Click(sender As Object, e As EventArgs) Handles btnRemoveProduct.Click - If String.IsNullOrEmpty(cbProducts.Text) Then - Return - End If - - If Not lbChosenProducts.Items.Contains(cbProducts.SelectedItem) Then - Return - End If + Private Sub UpdateSumLabel(sender As Object, e As EventArgs) Handles btnAddProduct.Click, btnRemoveProduct.Click, MyBase.Load + lblSum.Text = FormatCurrency(ChosenProducts.Sum(Function(p) p.Price), 2) + End Sub - lbChosenProducts.Items.Remove(cbProducts.SelectedItem) - Sum -= Prices(cbProducts.SelectedIndex) - lblSum.Text = ToCurrency(Sum) + Private Sub cbProducts_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbProducts.SelectedIndexChanged, MyBase.Load + lblProductPrice.Text = FormatCurrency(Products(cbProducts.SelectedIndex).Price, 2) End Sub End Class \ No newline at end of file diff --git a/VB.Net Projects/catalog/catalog/Product.vb b/VB.Net Projects/catalog/catalog/Product.vb new file mode 100644 index 0000000..a9c4fe5 --- /dev/null +++ b/VB.Net Projects/catalog/catalog/Product.vb @@ -0,0 +1,13 @@ +Public Class Product + Public Name As String + Public Price As Single + + Public Sub New(name As String, price As Single) + Me.Name = name + Me.Price = price + End Sub + + Public Overrides Function ToString() As String + Return Me.Name + End Function +End Class \ No newline at end of file -- cgit v1.2.3