VB 2013用户输入和应用程序内存之间的比较

时间:2014-07-01 22:12:38

标签: vb.net comparison

我有两个问题。

首先,您将如何比较考试" My.Settings.ListBox1"类型"系统。集合。专门。 StringCollection"到" ListBox1"?

的内容

我的表单上有许多项目(ListBoxes,Checkboxes和TextBoxes),用户可以为其输入数据,我创建了一个名为save的菜单项,他们可以将数据保存到应用程序内存中,这样当表单时重新加载用户并不需要输入数据。

话虽如此,我想将最新的用户输入与内存中的内容进行比较,以便当用户尝试退出程序时,如果他们没有点击保存并且输入与内存不匹配然后举起一面旗帜,我可以问他们是否愿意保存。

但是,如果有人可以提供帮助,我会对这种比较感到困惑吗?

第二个问题是我想要对比做什么。对于每次比较,我认为我可以增加一个计数器,这样如果没有满足所有的比较并且计数器小于最大数量,那么我可以提出一个标志,并且可以提示用户保存。很多时尚:

Dim saved As Integer
saved = 0
If My.Settings.TextBox2 = TextBox2.Text Then saved = saved + 1
If My.Settings.TextBox5 = TextBox5.Text Then saved = saved + 1
If My.Settings.TextBox9 = TextBox9.Text Then saved = saved + 1
If saved = 3 Then Me.Close()
Else

*然后我会在此时处理提示。

我没有测试过这个。在睡觉前最后一刻想到了。但我的问题是,有没有更有说服力的方法呢?我确定有。但这是我的新手VB大脑在这个时刻想出来的最好的。

感谢您提供任何帮助和建议!

1 个答案:

答案 0 :(得分:0)

如果你想检查文本框是否没有改变,你可以这样做。
如果这是真的,请从文本框1开始,然后检查文本框2,然后检查3,依此类推 一旦1不成立,您可以询问用户是否要保存。

将Public Sub SaveTextBox()放入要保存的所有内容中。

我只是使用了一个按钮,但当然你需要在结束时使用它 也许这不是最好的方式,但它有效。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    TextBox1.Text = My.Settings.TextBox1
    TextBox2.Text = My.Settings.TextBox2
    TextBox3.Text = My.Settings.TextBox3
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If My.Settings.TextBox1 = TextBox1.Text Then
        If My.Settings.TextBox2 = TextBox2.Text Then
            If My.Settings.TextBox3 = TextBox3.Text Then
                Me.Close()
            Else
                SaveTextBox()
            End If
        Else
            SaveTextBox()
        End If
    Else
        SaveTextBox()
    End If

End Sub

Public Sub SaveTextBox()
    If MessageBox.Show("Save new settings ?", "My Application", _
     MessageBoxButtons.YesNo, MessageBoxIcon.Question) _
     = DialogResult.Yes Then
        My.Settings.TextBox1 = TextBox1.Text
        My.Settings.TextBox2 = TextBox2.Text
        My.Settings.TextBox3 = TextBox3.Text
        My.Settings.Save()
        Me.Close()
    Else
        Me.Close()
    End If
End Sub