0

こんにちは、前回の 2 つの質問に続いて、別の問題に遭遇しました。ボタンの名前をユーザーが変更し、ボタンのテキストをテキスト ボックスに入力します。

label4 が admin の場合、ボタンをクリックするとボタン名を尋ねる入力ボックスが表示され、label4 がそれ以外の場合は、ボタンのテキストが別のボックスに追加されます。

これはすべて正常に機能します。問題は、プログラムを閉じてから再度開くと、すべてのボタンのテキストが削除されていることです。

要するに、私が求めているのは、ボタンに保存して、プログラムを閉じて再度開いたときにテキストがすべてのボタンに残るようにする方法です。

ボタンのコードは次のとおりです。

Dim Button As Button = DirectCast(sender, Button)

If Label4.Text = "Admin" Then
    With DirectCast(sender, Button)
        .Text = InputBox("Button Name", "Button Name", .Text)
    End With
Else
    Me.TransactionBindingSource.AddNew()
    Product_NameTextBox.Text = Button.Text

    Try
        Me.ProductTableAdapter.FillByProductName(Me.Database1DataSet.Product, Product_NameTextBox.Text)
    Catch ex As System.Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try

    ProductTextBox.Text = Button.Text
    GroupTextBox.Text = GroupTextBox1.Text
    AmountTextBox.Text = AmountTextBox1.Text
    PriceTextBox.Text = PriceTextBox1.Text
    TimeTextBox.Text = TimeOfDay
    DateTextBox.Text = DateString

    Me.Validate()

    Me.TransactionBindingSource.EndEdit()
    Me.TransactionTableAdapter.Update(Me.Database1DataSet)
    Timer2.Enabled = True
    TransNameLB.Items.Add(Button.Text)
    TransPriceLB.Items.Add(PriceTextBox.Text)

    Dim sum As Double
    For x As Integer = 0 To TransPriceLB.Items.Count - 1
        sum += Val(TransPriceLB.Items.Item(x).ToString)
    Next

    TextBox1.Text = sum.ToString
    QTYDrinksTB.Text = TransNameLB.Items.Count
End If

提供されたヘルプに事前に感謝します

クレイグ

4

2 に答える 2

2

Mark Hall が言ったこと (素晴らしい回答です!) に加えて、VB はそれをすべて自動的に行うことができます。アプリケーション設定へのバインドを設定する必要があります。

  1. ボタンの [プロパティ] タブに移動します
  2. (ApplicationSettings) プロパティを展開します。
  3. テキスト領域をクリックします。ドロップダウンが表示されるので、[新規] を選択します
  4. ポップアップするダイアログで名前を付け、スコープがユーザーであることを確認します

これで、アプリは設定したテキストを自動的に記憶し、アプリの起動時にリロードします

ここに画像の説明を入力

于 2012-07-28T02:58:50.363 に答える
1

Vb.net を使用しているため、ユーザー設定を保持する方法の 1 つはMy.Settingsオブジェクトを使用することです。これは単純化された例ですが、アイデアを提供する必要があります。

最初に、プロジェクトを右クリックして [プロジェクト プロパティ] 設定タブに移動し、ボタン名と同じ名前の設定を作成しました。

ここに画像の説明を入力

次に、このようにボタンクリックイベントに保存しました。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim btn As Button = DirectCast(sender, Button)

    With DirectCast(sender, Button)
        .Text = InputBox("Button Name", "Button Name", .Text)
        My.MySettings.Default.Item(Button1.Name) = .Text
        My.MySettings.Default.Save()
    End With
End Sub

次の手順では、フォーム コントロール コレクション内のすべてのコントロールを繰り返し処理して、保存されたテキストを配置するボタンを見つけます。

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    For Each cntrl As Control In Me.Controls
        If TypeOf cntrl Is Button Then
            If Not String.IsNullOrEmpty(My.MySettings.Default.Item(cntrl.Name).ToString) Then 'Check to make sure there is Data there
                cntrl.Text = My.MySettings.Default.Item(cntrl.Name).ToString
            End If
        End If
    Next
End Sub

または、ボタン名を明示的に使用することもできます。

 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    If Not String.IsNullOrEmpty(My.MySettings.Default.Item(Button1.Name).ToString) Then
        Button1.Text = My.MySettings.Default.Item(Button1.Name).ToString
    End If

End Sub
于 2012-07-28T02:50:09.173 に答える