2016-03-18 15 views
0

私のタイトルが理にかなっているかどうかわからないので、ここで私の質問を説明しようとします。だから、基本的に私はプログラムをカスタマイズしてプログラムを拡張しています。設定/オプションはどのように自己を保存しますか?

私はこれを行います:「ファイル」 - >「オプション」をクリックすると、新しいフォームがタブで開きます。私はあなたがドロップダウンボックスとチェックボックスで切り替えることができる別の設定があります。ユーザーが設定したい設定をしたら、「OK」または「Cancel」のボタンをクリックします。

これらの設定を保存する方法、または元の設定に戻す方法は何ですか。あなたはtxtファイルで保存しますか?これは特定のコード行の中のデフォルトの機能ですか?

更新日:

私は以前の問題を修正しました。今私はセーブを持っています。保存は正常に機能していますが、私はCheckListBox Collectionの範囲を選択する際にそれらを使用したいだけでなく、開始時にもその範囲の負荷を持っています。これらは私がこれまで使ってきた2つのものです。その結果、以前のセットのコレクションに追加されます。

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

はロード時CheckListBoxのために働いていない:

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

私はMe.LotteryNumbers.Items.Addから1を削除した場合、結果はこれです: Sample 1-100 CheckListBox

RNGのために働く

+0

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 
(https://msdn.microsoft.com/en-us/library/saa62613.aspx) – Plutonix

+0

恐ろしい、おかげ[My.Settingsはオブジェクト]。あなたはあちこちにいます。 – RockGuitarist1

+0

リンクからユーザー設定が必要です。アプリケーションの設定は読み取り専用です – Plutonix

答えて

1

これはコンパイルしないでください。

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

2番目の引数をとるoverloadは、Booleanにチェックされた項目を設定することを期待しています。一つの方法は、ループ内で項目を追加することです:

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は、オブジェクトのコレクションですので、Selectは、それらを追加する文字列に変換します。

+0

私は負荷のチェックボックスの量を作成するためにそれを得ることができましたが、私はそれを変更すると、何も起こらず、私が選択した数に関係なく、常に18のチェックボックスがあります。 – RockGuitarist1

+0

どこから来たのですか、設定に入力したデフォルトですか?設定に新しい値を割り当てていることを確認してください。 'My.Settings.numberSetting = Cint(somecontrol.Text)'は、コントロールへの変更が自動的に設定を更新する恒久的なマッピングではありません。自動的に設定するように設定されていない場合は、アプリが終了する前に設定を保存してください。 – Plutonix

+0

私はそれを理解しました。助けてくれてありがとう。私はちょうど私の注文が間違っていたことが判明しました。私は私のソリューションを投稿します。 – RockGuitarist1

1

NEVER ORDER BY RANDOM.NEXT()

ほとんどあなたは幸運を得るが、それは保証されませんです。実行時にコードが爆発するのは時間の問題です。並べ替える順序が長くなればなるほど、例外が発生する可能性が高くなります。 checklistboxボックス数を更新し、保存するための作業コードのための

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 
0

ソリューション:あなたの代わりに何をすべき

はフィッシャーイエーツのsortメソッドを実装しています。

関連する問題