User 13790648 Ответов: 2

Генерация различных (случайных) валютных сумм для различных значений места


У меня есть небольшой проект, в котором я пытаюсь генерировать различные суммы валюты в диапазоне от менее чем $1,00 до $9,99. Я хотел бы генерировать эти суммы одним из следующих вариантов: Доллары и центы, доллары (только), центы (только)
Функция долларов и центов и функция центов работают нормально, но я не могу заставить работать только функцию доллара(т. е.: $5.00, $2.00, $8.00). Что я делаю не так?

Что я уже пробовал:

Public Class Form1
    Public MaxAmount As Integer
    Public FrmattedAmt As New Random

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        RadioButton4.Hide()
        RadioButton5.Hide()
        RadioButton6.Hide()
        Button2.Enabled = False

    End Sub

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

        If RadioButton1.Checked = False And RadioButton2.Checked = False And RadioButton3.Checked = False Then Exit Sub

        Select Case True

            Case RadioButton1.Checked
                MaxAmount = 999

            Case RadioButton2.Checked
                MaxAmount = 9

            Case RadioButton3.Checked
                MaxAmount = 99

        End Select

        Randomize()

        TextBox1.Text = FormatCurrency(Math.Round(FrmattedAmt.Next(0, MaxAmount) / 100, 2), 2)

        RadioButton1.Enabled = False
        RadioButton2.Enabled = False
        RadioButton3.Enabled = False

        Button1.Enabled = False
        Button2.Enabled = True

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Button1.Enabled = True
        RadioButton1.Checked = False
        RadioButton1.Enabled = True
        RadioButton2.Checked = False
        RadioButton2.Enabled = True
        RadioButton3.Checked = False
        RadioButton3.Enabled = True
        RadioButton4.Hide()
        RadioButton5.Hide()
        RadioButton6.Hide()
        TextBox1.Clear()
        Button2.Enabled = False

    End Sub
End Class

[no name]

Извините, я просто тестировал это несколько раз, и функция Dollars &Cents просто придумала только центы.

2 Ответов

Рейтинг:
2

Eduard Keilholz

Я не понимаю вашего подхода...

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

Мы не можем видеть, что делает функция randomize ()? (кстати, возможно, было бы разумно использовать параметр seed для Random (), чтобы предотвратить его генерацию одних и тех же числовых последовательностей.

Почему доллар только не работает, так это потому, что вы каждый раз умножаете случайно сгенерированное число на 100. Я думаю, что когда вы генерируете круглую сумму в долларах, ваш Макс должен быть установлен на 9, и вы не должны делить на 100


[no name]

Спасибо за предложение насчет переключателей. Я не переименовывал их, потому что в данный момент я только экспериментирую с этим кодом. Я планирую добавить больше кода для изменения текста переключателей 4,5 и 6 в более позднее время. РБ1 = США &амп; копеек, РБ2 = долларов, РБ3 = копеек. Я прокомментировал, что проверил функцию долларов и центов, и она тоже генерирует суммы под доллар. Как бы я ни старался, я не могу добавить ссылку на вопрос с изображением моей формы - ?

Рейтинг:
12

User 13790648

Спасибо вам (искренне) за советы. Я все понял.:

<pre>Public MaxAmount As Integer
    Public FrmattedAmt As New Random

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        RadioButton4.Hide()
        RadioButton5.Hide()
        RadioButton6.Hide()
        Button1.Enabled = False
        Button2.Enabled = False

    End Sub

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

        If RadioButton1.Checked = False And RadioButton2.Checked = False And RadioButton3.Checked = False Then Exit Sub

        Randomize()

        Select Case MaxAmount

            Case 9 ' Dollars
                TextBox1.Text = FormatCurrency(Math.Round(FrmattedAmt.Next(1, MaxAmount), 2), 2)
            Case 99 'Cents
                TextBox1.Text = FormatCurrency(Math.Round(FrmattedAmt.Next(10, MaxAmount) / 100, 2), 2)
            Case 999 ' Dollars & Cents
                TextBox1.Text = FormatCurrency(Math.Round(FrmattedAmt.Next(1, MaxAmount) / 100, 2), 2)

        End Select

        TextBox1.Select(0, 0)
        RadioButton1.Enabled = False
        RadioButton2.Enabled = False
        RadioButton3.Enabled = False

        Button1.Enabled = False
        Button2.Enabled = True

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        RadioButton1.Checked = False
        RadioButton1.Enabled = True
        RadioButton2.Checked = False
        RadioButton2.Enabled = True
        RadioButton3.Checked = False
        RadioButton3.Enabled = True
        RadioButton4.Hide()
        RadioButton5.Hide()
        RadioButton6.Hide()
        TextBox1.Clear()
        Button1.Enabled = False
        Button2.Enabled = False

    End Sub

    Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
        RadioButton1.Font = IIf(RadioButton1.Checked = True, New Font(RadioButton1.Font, FontStyle.Bold), New Font(RadioButton1.Font, FontStyle.Regular))
        If RadioButton1.Checked = True Then
            MaxAmount = 999
            Button1.Enabled = True
        End If
    End Sub

    Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged
        RadioButton2.Font = IIf(RadioButton2.Checked = True, New Font(RadioButton2.Font, FontStyle.Bold), New Font(RadioButton2.Font, FontStyle.Regular))
        If RadioButton2.Checked = True Then
            MaxAmount = 9
            Button1.Enabled = True
        End If
    End Sub

    Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton3.CheckedChanged
        RadioButton3.Font = IIf(RadioButton3.Checked = True, New Font(RadioButton3.Font, FontStyle.Bold), New Font(RadioButton3.Font, FontStyle.Regular))
        If RadioButton3.Checked = True Then
            MaxAmount = 99
            Button1.Enabled = True
        End If
    End Sub
End Class