设置/选项如何保存自己?

时间:2016-03-18 19:38:38

标签: vb.net

不确定我的标题是否有意义,所以我会在这里解释我的问题。所以基本上我通过允许在其中定制事物来扩展我的程序。

比如说我这样做:我点击文件 - >使用选项卡打开选项和新表单。我有不同的设置,您可以通过下拉框和复选框切换。现在,一旦用户设置了他们想要或不想要的设置,他们就会点击一个按钮,上面写着" OK"或"取消"。

保存这些设置或恢复原始设置的方法是什么?你是通过txt文件保存的,还是某个代码行中的默认函数?

更新:

所以我修复了上一期。现在我有另一个与保存。保存工作正常,但是我想在选择我的CheckListBox Collection范围时使用它们,并且还在启动时加载该范围。所以这些是我一直用来做的两件事,这会导致添加到之前的set集合中。

为RNG工作:

Dim rand As New Random()
    Dim winners = Enumerable.Range(1, My.Settings.numberSetting).OrderBy(Function(r) rand.Next()).Take(5).ToArray()

不适用于Onload CheckListBox:

Me.LotteryNumbers.Items.Add(1, My.Settings.numberSetting)

如果我从Me.LotteryNumbers.Items.Add中删除1,结果如下: Sample 1-100 CheckListBox

3 个答案:

答案 0 :(得分:1)

这不应该编译:

LotteryNumbers.Items.Add(1, My.Settings.numberSetting)

带有第二个参数的重载期望Boolean设置添加到Checked的项目。一种方法是在循环中添加项目:

Dim maxNums = My.Settings.numberSetting

' make sure it is empty
clb.Items.Clear()

For n As Int32 = 1 To maxNums
    clb.Items.Add(n.ToString)
Next

我不想将Settings中的项目用作变量,因此它会抓取当前使用的值。另一种方法是使用AddRange

clb.Items.AddRange(Enumerable.Range(1, maxNums).Select(Function(s) s.ToString()).ToArray())

Items是Object的集合,因此Select转换为字符串以添加它们。

答案 1 :(得分:1)

NEVER ORDER BY RANDOM.NEXT()

大多数情况下,幸运,,但不能保证。在运行时代码爆炸只是时间问题。要排序的序列越长,获得异常的可能性就越大。

你应该做的是实施Fisher-Yates排序方法:

Private rand As New Random()
Public Function Shuffle(Of T)(ByVal items As IList(Of T)) As IList(Of T)
    For i As Integer = items.Count - 1 To 1 Step -1
        Dim j As Integer = rand.Next(i + 1)
        Dim temp As T= items(i)
        items(i) = items(j)
        items(j) = temp
    Next
    Return items
End Function

答案 2 :(得分:0)

解决工作代码以更新和保存checklistbox框计数。

Private Sub OptionOkButton_Click(sender As Object, e As EventArgs) Handles OptionOkButton.Click
    Main.LotteryNumbers.Items.Clear()
    My.Settings.numberSetting = CInt(NumberCombo.Text)
    Dim maxNum = My.Settings.numberSetting
    Main.LotteryNumbers.Items.AddRange(Enumerable.Range(1, maxNum).Select(Function(s) s.ToString()).ToArray())
    My.Settings.Save()
    Me.Close()
End Sub