2012-03-31 3 views
0

Я работаю над этим проектом в течение двух недель, и я истощен из всех икота, с которыми я столкнулся. Теперь я ударил кирпичную стену.Visual Basic: Создание нескольких форм для заказа

Я делаю «простую» форму заказа в Visual Basic 2010, которая рассчитывает сумму, причитающуюся за заказ, а затем из общей суммы определяет, что будет с доставкой. Я был в состоянии выполнить следующие задачи:

  1. принимают данные о клиенте (имя, адрес, город, штат аббревиатура, ZipCode)
  2. подсчитайте с наложенным платежом (точнее, по большей части)
  3. очистить форму заказа и выйти

Но так как у меня есть это прямо сейчас, клиент может разместить только 1 форму заказа.

Задача: Мне нужно выяснить, как сделать заказ клиентом форму заказа для нескольких товаров. (Я предполагаю, что заказчик не разместит заказ на более чем 20 предметов). Итак, каков был бы лучший способ сохранить информацию для нескольких элементов, а затем рассчитать стоимость в конце?

Если это создание нескольких форм, как это сделать? Является ли ключевым словом «Контейнер» путь, и как? В конце концов, я просто не знаю, как создать эту форму из нескольких элементов (это похоже на базу данных в Visual Basic), поэтому любой метод, по крайней мере, указывая на меня в правильном направлении, будет полезен.

(Пытался разместить изображение моей работы до сих пор, но я новичок здесь. - не публиковать изображения пока я отправил немного мой код ниже - код работает на 1 заказ)

Код фрагмента:

Private Sub total_mouseleave(ByVal sender As Object, ByVal e As EventArgs) Handles total.MouseLeave 

    Dim gs_1 As Decimal = 4.95 
    Dim gs_2 As Decimal = 6.95 
    Dim gs_3 As Decimal = 8.95 
    Dim gs_4 As Decimal = 10.95 
    Dim gs_5 As Decimal = 12.95 
    Dim ex_1 As Decimal = 14.95 
    Dim ex_2 As Decimal = 16.95 
    Dim ex_3 As Decimal = 18.95 
    Dim ex_4 As Decimal = 20.95 
    Dim ex_5 As Decimal = 22.95 
    Dim totalcost As Decimal 

    totalcost = Convert.ToDecimal(total.Text) 

    If gs_radiobutton.Checked Then 
    If (totalcost < 1) Then 
     total.Text = Val(0) 
     shipping.Text = Val(0) 
    ElseIf (1 < totalcost AndAlso totalcost < 15) Then 
     total.Text = Val(totalcost + gs_1) 
     shipping.Text = ground_1 
    ElseIf (15 < totalcost AndAlso totalcost <= 49.99) Then 
     total.Text = totalcost + gs_2 
     shipping.Text = gs_2 
    ElseIf (50 < totalcost AndAlso totalcost <= 99.99) Then 
     total.Text = totalcost + g_3 
     shipping.Text = gs_3 
    ElseIf (100 < totalcost AndAlso totalcost <= 199.99) Then 
     total.Text = totalcost + gs_4 
     shipping.Text = gs_4 
    Else 
     total.Text = totalcost + gs_5 
     shipping.Text = gs_5 
    End If 
    End If 

    '// . . . . 

End Sub 

ответ

0

Это не ясно из вашего сообщения, если вы имеете в виду формы заказов, как в объекте Form в VB, или в порядке, установленном пользователем.

Если вы имели в виду заказы, помещенные пользователем, то было бы проще использовать единую форму, но создать несколько пользовательских классов, чтобы держать все детали заказа строки:

' Class used for each order line 
Public Class orderline 

    Public Value As Decimal 
    Public StockID As Integer 
    Public Qty As Integer 

End Class 

' Class used to store the entire order 
Public Class Order 

    ' List of orderlines (similar to an array) 
    Public OrderLines As List(Of orderline) 

    Private _totalcost As Decimal 

    Public ReadOnly Property TotalCost As Decimal 

     Get 
      Dim t As Decimal 

      For Each l In OrderLines 
       t = t + (l.Value * l.Qty) 
      Next 

      Return t 

     End Get 

    End Property 

End Class 

Тогда в форме, вы можете использовать классы, как показано ниже:

Public Class Form1 

    Dim ord1 As New Order 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 

     TextBox1.Text = ord1.TotalCost 

    End Sub 
End Class 

Вы можете создать более одного заказа, хранящуюся на форме с использованием списка:

Dim CustomerOrders as List<Of Order> 
0

Вы должны быть способны создать несколько экземпляров формы и показать их не нравственно. Является ли это лучшим дизайном, это еще одно обсуждение. Немодальные формы все будут видны и могут быть «принадлежащими» основной формой.

попробовать что-то вроде этого:

Dim firstInstance As New YourForm() 
Dim secondInstance As New YourForm() 

firstInstance.Show() 'Not ShowDialog() 
secondInstance.Show(myParent) 'Optional parent form parameter 

Вы должны будете следить за рамки ваших экземпляров формы, как формы будут закрыты, если переменные выходят из области видимости.

Это не может быть окончательное решение, но вы можете попробовать найти оптимальный подход.

Учитывая последний комментарий:

Проблема не ясна. Вы хотите создать несколько форм, одну форму за заказ? Или вам нужна одна форма, которая может отображать несколько заказов?

Мое решение позволит вам отображать несколько форм, в то время как другой ответ на него предлагает аккуратное решение для создания одной формы с несколькими порядками.

Лично я хотел бы создать единую форму, которая показывает несколько заказов, возможно, ListView, который предоставляет некоторый способ просмотра/редактирования данных каждого заказа, а затем позволяет отправлять заказы в пакете. Это сложнее, но было бы более полезным, ИМХО.

+1

Не модально отличается от не морально! –

+0

Также рассмотрим интерфейс интерфейса MDI. –

+0

Некоторые утверждают, что модальность безнравственна. Это так? –

Смежные вопросы