我有两个问题。
首先,您将如何比较考试" 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大脑在这个时刻想出来的最好的。
感谢您提供任何帮助和建议!
答案 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