5

私は3つのボタンを保持する小さなプログラムを持っていwinformsます。これまでのところ、プログラムは、ユーザーが対応するボタンをクリックすることによって別のボタンの色を変更できるようにします。3 番目のボタンはまだ何もしません。私がやりたいことは、ユーザーがフォームに加えられた変更を保存できるようにすることです (フォームの状態を保存します)。そのため、フォームを再度開くと、保存したときと同じ状態で開きます。

私が求めているものについて明確になっていることを願っています

フォームの視覚化は次のとおりです。

ここに画像の説明を入力

何か助けがあれば、これまでに持っているコード:

public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            btnToColor.Text = "";
        }

        int c = 0;
        private void btnColorSwap_Click(object sender, EventArgs e)
        {
            if (c == 0)
            {
                btnToColor.BackColor = Color.Yellow;
                c++;

            }

            else if (c == 1)
            {
                btnToColor.BackColor = Color.YellowGreen;

                c++;
            }

            else if (c == 2)
            {
                btnToColor.BackColor = Color.LimeGreen;

                c = 0;
            }

        }
    }
4

3 に答える 3

7

これはあなたにとって簡単かもしれません/そうでないかもしれません。

状態を保持するクラスを作成することから始めます。

public class MyFormState {
    public string ButtonBackColor { get; set; }
}

Form次に、このオブジェクトを使用してメンバーを宣言します。

public partial class Form1 : Form {
    MyFormState state = new MyFormState();

フォームの読み込み時に、構成が存在するかどうかを確認してから読み込みます。

private void Form1_Load(object sender, EventArgs e) {
    if (File.Exists("config.xml")) {
        loadConfig();
    }

    button1.BackColor = System.Drawing.ColorTranslator.FromHtml(state.ButtonBackColor);
}

private void loadConfig() {
    XmlSerializer ser = new XmlSerializer(typeof(MyFormState));
    using (FileStream fs = File.OpenRead("config.xml")) {
        state = (MyFormState)ser.Deserialize(fs);
    }
}

フォームが閉じているとき..構成を保存します。

private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
    writeConfig();
}

private void writeConfig() {
    using (StreamWriter sw = new StreamWriter("config.xml")) {
        state.ButtonBackColor = System.Drawing.ColorTranslator.ToHtml(button1.BackColor);
        XmlSerializer ser = new XmlSerializer(typeof(MyFormState));
        ser.Serialize(sw, state);
    }
}

次に、状態クラスにメンバーを追加すると、config.xml ファイルに書き込まれます。

于 2013-01-31T02:12:41.140 に答える
6

プロジェクトのプロパティページを確認すると、設定ファイルを追加できます。

コードで設定を使用するには、次のようにします。

Properties.Settings.Default.SettingName

これらの設定はローカルであり、各マシンで指定する必要があることに注意してください。

サンプルコード:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        Properties.Settings.Default.btn1 = button1.UseVisualStyleBackColor ? Color.Transparent : button1.BackColor;
        Properties.Settings.Default.btn2 = button1.UseVisualStyleBackColor ? Color.Transparent : button2.BackColor;
        Properties.Settings.Default.btn3 = button1.UseVisualStyleBackColor ? Color.Transparent : button3.BackColor;
    }

    private void Form1_Load(object sender, EventArgs e)
    {

        if (Properties.Settings.Default.btn1 != Color.Transparent) button1.BackColor = Properties.Settings.Default.btn1;
        if (Properties.Settings.Default.btn2 != Color.Transparent) button1.BackColor = Properties.Settings.Default.btn2;
        if (Properties.Settings.Default.btn3 != Color.Transparent) button1.BackColor = Properties.Settings.Default.btn3;
    }

これは、MSDNhttp://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspxの設定クラスへのリンクです


PropertyPages

プロパティ設定ページ

于 2013-01-31T01:34:12.157 に答える
0

通常、ユーザー インターフェイス設定を保存する場合、標準的な方法は、XML ファイルを使用して設定を保存またはロードすることです。xml を使用してユーザー インターフェイス コンポーネントを保存するこの例を作成しました。

https://www.dropbox.com/s/1j1qbe7udqxizr6/4.XMLConfigurationEditor.rar?dl=0

于 2015-06-10T15:16:24.863 に答える