私はArrayListsとStructuresに慣れさせるためにVBでプログラミングを割り当てています。私はこのatmを行うための最善の方法はリストを使用することであることを理解していますが、教授は構造を持つarraylistsを使って私に望みます。私は構造としてarraylistに保存されている顧客の詳細(名前、アカウント#、残高)を入力する必要があるフォームアプリケーションがあります。このプログラムでは、ユーザーがアカウントを変更した後、「次へ」または「前の」ボタンを押してページを閉じると、arraylistには変更が加えられます。これは私のプログラムでこれまでに得たところです。 [次へ]または[前へ]をクリックすると、プログラムがクラッシュし、残高のアカウントで次のエラーが表示されます。文字列から "Double"を入力する変換は無効です。私はテキストボックスから倍精度浮動小数点型の整数を受け入れない理由を理解していません。構造体をArrayListに適切に挿入するにはどうすればよいですか?
Public Class AccountInformationForm
Dim objaccount As account
Dim accounts As New ArrayList
Dim count As Integer
Public Structure account
Public RecordNum As Integer
Public FirstName As String
Public LastName As String
Public balance As Double
Public account As Integer
End Structure
Private Sub AccountInformationForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
count = 0
objaccount.RecordNum = 0
objaccount.FirstName = "Jesus"
objaccount.LastName = "Christ"
objaccount.balance = 100
objaccount.account = 1
accounts.Add(objaccount)
'Display First Record
firstTextBox.Text = objaccount.FirstName
lastTextBox.Text = objaccount.LastName
balanceTextBox.Text = objaccount.balance
accountTextBox.Text = objaccount.account
End Sub
Private Sub nextButton_Click(sender As Object, e As EventArgs) Handles nextButton.Click
objaccount.FirstName = firstTextBox.Text
objaccount.LastName = lastTextBox.Text
objaccount.balance = balanceTextBox.Text
objaccount.account = accountTextBox.Text
accounts.Insert(count, objaccount)
count += 1
If count > (accounts.Count - 1) Then
count = 0
End If
'Display Current Record
firstTextBox.Text = accounts(count).FirstName
lastTextBox.Text = accounts(count).LastName
balanceTextBox.Text = accounts(count).balance
accountTextBox.Text = accounts(count).account
End Sub
Private Sub previousButton_Click(sender As Object, e As EventArgs) Handles previousButton.Click
'Before paging away, save the current form data in the current record
objaccount.FirstName = firstTextBox.Text
objaccount.LastName = lastTextBox.Text
objaccount.balance = balanceTextBox.Text
objaccount.account = accountTextBox.Text
accounts.Insert(count, objaccount)
count -= 1
If count < 0 Then
count = accounts.Count - 1
End If
firstTextBox.Text = accounts(count).FirstName
lastTextBox.Text = accounts(count).LastName
balanceTextBox.Text = accounts(count).balance
accountTextBox.Text = accounts(count).account
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Dim upper As Integer = accounts.Count
objaccount.RecordNum = (upper + 1)
If firstTextBox.Text = "" Then
MsgBox("Please enter a name")
Else
objaccount.FirstName = firstTextBox.Text
End If
If lastTextBox.Text = "" Then
MsgBox("Please enter a name")
Else
objaccount.LastName = lastTextBox.Text
End If
If balanceTextBox.Text = "" Then
MsgBox("Please enter a name")
Else
objaccount.balance = balanceTextBox.Text
End If
If accountTextBox.Text = "" Then
MsgBox("Please enter a name")
Else
objaccount.account = accountTextBox.Text
End If
accounts.Add(objaccount)
firstTextBox.Clear()
lastTextBox.Clear()
balanceTextBox.Clear()
accountTextBox.Clear()
End Sub
Private Sub Save_Click(sender As Object, e As EventArgs) Handles Save.Click
If firstTextBox.Text = "" Then
MsgBox("Please enter a name")
Else
objaccount.FirstName = firstTextBox.Text
End If
If lastTextBox.Text = "" Then
MsgBox("Please enter a name")
Else
objaccount.LastName = lastTextBox.Text
End If
If balanceTextBox.Text = "" Then
MsgBox("Please enter a name")
Else
objaccount.balance = balanceTextBox.Text
End If
If accountTextBox.Text = "" Then
MsgBox("Please enter a name")
Else
objaccount.account = accountTextBox.Text
End If
accounts.Add(objaccount)
End Sub
Private Sub btnNew_Click(sender As Object, e As EventArgs) Handles btnNew.Click
firstTextBox.Clear()
lastTextBox.Clear()
balanceTextBox.Clear()
accountTextBox.Clear()
Dim upper As Integer = accounts.Count
objaccount.RecordNum = (upper + 1)
accountTextBox.Text = objaccount.RecordNum
End Sub
Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
accounts.RemoveAt(count)
count = count - 1
firstTextBox.Text = accounts(count).FirstName
lastTextBox.Text = accounts(count).LastName
balanceTextBox.Text = accounts(count).balance
accountTextBox.Text = accounts(count).account
End Sub
End Class
あなたのコードをダンプし、何か間違ったものが見つかることを期待して私たちがそれを辿ることを期待して、ここで私は恐れます。 SOは特定の質問のためのものです。期待どおりに動作していないものを正確に切り分け、関連するコードだけを含む完全かつ明確な説明を提供するのはあなた次第です。どのようなエラーメッセージが表示されているのか、どのような動作が見えているのか、どのような動作が期待通りに異なるのかを説明する必要があります。あなたがそれを行うことができない場合、ここに投稿するのは時期尚早です。 – jmcilhinney
私の質問は、問題がボタンをクリックすると、次と前のいずれかをクリックするとすぐにプログラムがクラッシュし、「文字列からの変換」が「ダブル」残高口座に「有効ではありません」と表示されます。 –
そうではありませんでした。あなたはそれが必須だと言いましたが、それはうまくいかないとは言わず、特定のエラーメッセージが出ているとは言いませんでした。これは私達が推測しなければならないものではありません。質問を編集して無関係なコードをすべて削除し、関連していない情報をすべて追加してください。助けたい人は、必要なものを見つけるためにコメントを読む必要はありません。 – jmcilhinney