试图保存格式设置

本文关键字:设置 格式 保存 | 更新日期: 2023-09-27 18:12:48

所以我试图在设置页面上用可用的com端口填充一个组合框。

一旦设置被选择,我希望该设置被保留,并通过保存按钮保存设置功能全局可用。我想一定有比这更简单的方法!

private void Form2_Load(object sender, EventArgs e)
{
    pumpPort = SerialPort.GetPortNames();
    this.comboBox1.Items.AddRange(pumpPort);
    this.comboBox1.SelectedItem = Properties.Settings.Default.Setting;
    Properties.Settings.Default.Save();
    switch (Properties.Settings.Default.Setting)
    {
     case "COM1":
        this.comboBox1.SelectedItem = Properties.Settings.Default.COMPORT1;
            break;
     case "COM2":
        this.comboBox1.SelectedItem = Properties.Settings.Default.COMPORT2;
            break;
        default:
            break;
    }

不用说,这在关闭form2后不会保留任何设置。我希望即使在程序退出后它也能保留,更不用说form2了。

试图保存格式设置

当你这样做的时候:

this.comboBox1.SelectedItem = Properties.Settings.Default.Setting;`

您正在设置组合框的选定项。

我觉得你真的想要改变。

Properties.Settings.Default.Setting = this.comboBox1.SelectedItem

您可能希望在组合框的更改事件中执行分配,以便当用户选择该值时,您的设置被更新并保存。

private void Form2_Load(object sender, EventArgs e)
{
    pumpPort = SerialPort.GetPortNames();
    this.comboBox1.Items.AddRange(pumpPort);
}
public void comboBox1_SelectedIndexChanged(object sender, EventArgs eventArgs)
{
    Properties.Settings.Default.Setting = this.comboBox1.SelectedItem;
    Properties.Settings.Default.Save();
}

正如@wbennett在他的回答中指出的那样,确保indexchanged事件是在你的代码后面设置的,或者最好是在你的设计器中设置的。

您需要更新默认设置并在comboBox1更改事件上调用save。

一样:

private void Init()
{
      ...
      this.comboBox1.SelectedIndexChanged +=
           new System.EventHandler(ComboBox1_SelectedIndexChanged);
}
private void ComboBox1_SelectedIndexChanged(object sender,
        System.EventArgs e)
{
      //other event code
      ...
      var comboBox = (ComboBox)sender;
      var port = (string)comboBox1.SelectedItem;
      Properties.Settings.Default.Setting = port;
      Properties.Settings.Default.Save();
      ...
}