0

ユーザーがプログラムを再度実行したときのために、Visual Studio 2008 で My.Settings を使用して情報を保存しています。

私はそれがうまく機能しています...しかし、私は12個のテキストボックスを使用しているので、書きたくありません...

my.settings.grade1 = textbox1.text

それぞれについて、保存された情報を使用して計算も行っているため、my.settings.grade1 + my.settings.grade2などを書きたくない.

どんな助けでも大歓迎

ありがとう =)

4

5 に答える 5

1

ApplicationSettings Binding を使用して、値を Textboxes.Text プロパティに自動的にバインドすることを検討しましたか。これにより双方向バインディングがサポートされ、閉じるときに Save を呼び出すだけで済みます。

于 2008-12-12T21:18:20.283 に答える
1

テキストボックスを含むフォームで、フォームの初期化時にそれらをテキストボックスのコレクションまたは配列に追加します。

次に、テキスト ボックスのコレクションまたは配列を反復処理して、設定値に割り当てます。

テキストボックスの配列への割り当てを手動でコーディングしたくない場合は、フォームの初期化コードで、フォーム上のすべてのコントロールを繰り返し処理し、コントロールの種類または各テキストボックスに割り当てる特定の「タグ」を確認します。次に、各テキストボックスをそのように配列に追加します。

For Each c as Control in Me.Controls

 If c.Tag.ToString() = "Grade" Then
  ' Add Items to collection here '
 End If

Next c
于 2008-12-12T19:49:09.637 に答える
0

グレードのテキストボックスのリストを入力します。

'at the class level'
Public GradeBoxes(11) As TextBox
Const grade As String = "GRADE"

'when the form is created'
Dim i As Integer = 0
For Each ctr As Control In Controls
    If TypeOf (ctr) Is TextBox AndAlso ctr.Name.ToUpper.StartsWith(grade) Then
        i = CInt(ctr.Name.SubString(grade.Length))
        If i >= 0 AndAlso i < GradeBoxes.Length Then GradeBoxes(i) = ctrl
    End If
Next ctr

For Each box As TextBox in GradeBoxes
    If box IsNot Nothing AndAlso My.Settings(box.Name) IsNot Nothing Then
        box.Text = My.Settings(box.Name)
    End If
Next box

成績を保存する:

For Each box As TextBox in GradeBoxes
    If box IsNot Nothing AndAlso My.Settings(box.Name) IsNot Nothing Then
        My.Settings(box.Name) = box.Text
    End If
Next box
My.Settings.Save()
于 2008-12-12T21:12:03.743 に答える
0

または、次のようなことができます。

あなたのテキストボックスがGrade1、Grade2、Grade3などの行に沿って命名されているとします。

Grades を配列に格納してから、配列をループすることができます。

((TextBox)form.findControl("Grade" + i.ToString())).Text = Grade(i)

計算によっては、ループ内で計算を実行することもできます。

于 2008-12-12T19:55:34.383 に答える
-1

みたいな意味ですか?

    Dim sum As Long
    Dim grades(11) As Long

    Dim i As Integer = 0
    For Each ctr In Controls
        If TypeOf (ctr) Is TextBox Then
            grades(i) = CLng(ctr.Text)
            sum = sum + grades(i)
            i = i + 1
        End If
    Next
于 2008-12-12T19:54:32.713 に答える