我在 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;
}
}
}
最佳答案
这对您来说可能/可能不会更容易。
首先创建一个类来保存您的状态:
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 文件中。
关于c# - 保存表单状态然后以相同状态打开它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14616958/