4

ラジオ ボタンの 2 つのグループ (4 つのボタンの 2 つのグループ) があり、チェック済みの状態を保存し、プログラム/メイン フォームが読み込まれるとすぐにチェック済みの状態を読み込みます。ラジオ ボタンはメイン フォームにはありません。

Properties.Settings を使用してこれを行うにはどうすればよいですか?

「プリファレンス」フォームのコードは次のとおりです。

public string DataFormat, KeyboardFormat;

public void UpdateUserChoice(string date, string keyboard)
    {
        if (date == ddmmyyyy.Text)
            ddmmyyyy.Checked = true;
        else if (date == mmddyyyy.Text)
            mmddyyyy.Checked = true;
        else if (date == yyyyddmm.Text)
            yyyyddmm.Checked = true;
        else if (date == yyyymmdd.Text)
            yyyymmdd.Checked = true;
        //----------------------------------------------------------
        if (keyboard == qwerty.Text)
            qwerty.Checked = true;
        else if (keyboard == qwertz.Text)
            qwertz.Checked = true;
        else if (keyboard == azerty.Text)
            azerty.Checked = true;
        else if (keyboard == dvorak.Text)
            dvorak.Checked = true;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (ddmmyyyy.Checked)
            DataFormat = ddmmyyyy.Text;
        else if (mmddyyyy.Checked)
            DataFormat = mmddyyyy.Text;
        else if (yyyyddmm.Checked)
            DataFormat = yyyyddmm.Text;
        else if (yyyymmdd.Checked)
            DataFormat = yyyymmdd.Text;
        //--------------------------------------------------
        if (qwerty.Checked)
            KeyboardFormat = qwerty.Text;
        else if (qwertz.Checked)
            KeyboardFormat = qwertz.Text;
        else if (azerty.Checked)
            KeyboardFormat = azerty.Text;
        else if (dvorak.Checked)
            KeyboardFormat = dvorak.Text;
        this.Close();
    }

MainForm のコードは次のとおりです。

private void DateStamp()
    {
        if (dateFormat.ToUpper() == "DD/MM/YYYY")
        {
            int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
            string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
            string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
            string currentDate = DateTime.Now.ToString("dd-MM-yyyy");
            richTextBoxPrintCtrl1.SelectedText = currentDate;
        }
        else if (dateFormat.ToUpper() == "MM/DD/YYYY")
        {
            int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
            string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
            string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
            string currentDate = DateTime.Now.ToString("MM-dd-yyyy");
            richTextBoxPrintCtrl1.SelectedText = currentDate;
        }
        else if (dateFormat.ToUpper() == "YYYY/DD/MM")
        {
            int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
            string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
            string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
            string currentDate = DateTime.Now.ToString("yyyy-dd-MM");
            richTextBoxPrintCtrl1.SelectedText = currentDate;
        }
        else if (dateFormat.ToUpper() == "YYYY/MM/DD")
        {
            int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
            string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
            string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
            string currentDate = DateTime.Now.ToString("yyyy-MM-dd");
            richTextBoxPrintCtrl1.SelectedText = currentDate;

private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
    {
        UserPreferences pref = new UserPreferences();
        pref.UpdateUserChoice(dateFormat, keyboardFormat);
        pref.ShowDialog();
        dateFormat = pref.DataFormat;
        keyboardFormat = pref.KeyboardFormat;
    }


    private void virtualKeyboardToolStripMenuItem1_Click(object sender, EventArgs e)
    {
        if (keyboardFormat.ToUpper() == "QWERTY")
        {
            Virtual_Keyboard vKeyboard = new Virtual_Keyboard();
            vKeyboard.Show();
        }
        else if (keyboardFormat.ToUpper() == "QWERTZ")
        {
            QWERTZ qwertz = new QWERTZ();
            qwertz.Show();
        }
        else if (keyboardFormat.ToUpper() == "AZERTY")
        {
            AZERTY azerty = new AZERTY();
            azerty.Show();
        }
        else if (keyboardFormat.ToUpper() == "DVORAK")
        {
            DVORAK dvorak = new DVORAK();
            dvorak.Show();
        }
        }

ユーザーがプログラムを再度開いたときに、これらの「設定」も読み込まれるように、ラジオボタンのチェック状態を保存したいと思います(添付の図を参照)。どうすればこれを達成できますか?可能であれば、Properties.Settings を使用します。

2 つの「設定」を作成しました。DatePreference と KeyboardPreference。また、それらがどの「タイプ」であるべきかわかりません。誰かが私を導くことができれば、本当に感謝しています。プログラミング初心者なのでよろしくお願いします。

RadioButton の名前は次のとおりです。

ddmmyyyy mmddyyyy yyyyddmm yyyymmdd

qwerty qwertz azerty dvorak

ご協力いただきありがとうございます。

- 編集 -

これが WinForms アプリケーションであることを忘れていました。

設定

設定ダイアログ

4

3 に答える 3

0

Resources.resx ファイルを使用するのはどうですか (プロジェクトによって異なります)。また、xml ファイルを使用して値を保存することもできます。多くの設定がある場合は、Datatable (たとえば "Settings" という名前) を使用して Dataset 内に配置し、SaveToXml と LoadFromXml を使用してより高速な結果を得ることができます。

于 2013-05-12T16:24:44.657 に答える