试图保存comport设置

时间:2014-07-14 20:19:19

标签: c# com serial-port save settings

因此,我尝试在设置页面上使用可用的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

2 个答案:

答案 0 :(得分:0)

您需要更新默认设置并在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();
      ...
}

答案 1 :(得分:0)

执行此操作时:

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事件在你的代码隐藏中设置,或者最好在你的设计器中设置。