1

我有一个文件夹浏览器按钮和一个显示所选路径的组合框。我希望它保留以前选择的路径。我写了这段代码,它工作正常。但我想知道是否有更有效的方法来做到这一点。

      private void Form1_Load_1(object sender, EventArgs e)
       string hurrem, hurrem2, hurrem3, hurrem4, hurrem5;
        hurrem = Settings.Default["com1"].ToString();
        hurrem2 = Settings.Default["com2"].ToString();
        hurrem3 = Settings.Default["com3"].ToString();
        hurrem4 = Settings.Default["com4"].ToString();
        hurrem5 = Settings.Default["com5"].ToString();


        comboBox2.Items.Add(hurrem);
        comboBox2.Items.Add(hurrem2);
        comboBox2.Items.Add(hurrem3);
        comboBox2.Items.Add(hurrem4);
        comboBox2.Items.Add(hurrem5);
        comboBox2.SelectedIndex = 0;

     private void button1_Click(object sender, EventArgs e)
    {
                  //..code
            Settings.Default["com5"] = Settings.Default["com4"];
            Settings.Default["com4"] = Settings.Default["com3"];
            Settings.Default["com3"] = Settings.Default["com2"];
            Settings.Default["com2"] = Settings.Default["com1"];
            Settings.Default["com1"] = path1.ToString();

            Settings.Default.Save();
4

1 回答 1

1

您可以LimitedStack从此处使用:Limit size of Queue<T> in .NET? . 然后,您可以使用 . 添加用于序列化/反序列化数据的方法Settings.Default

public void Save()
{
  int i = 0;
  foreach (var item in _stack)
  {
    Settings.Default["com" + i++] = item;
  }

  Settings.Default.Save();
}

public void Load()
{
  for (int i = 0; i < Limit; i++)
  {
    _stack.Add((T)Settings.Default["com" + i++]);
  }
}

存储项目(假设您将有限的堆栈保存在名为 的变量中myStack):

myStack.Push(path1.ToString());
myStack.Save();

将项目添加到组合框:

for (int i = 0; i < myStack.Limit; i++)
{
  comboBox2.Items.Add(myStack.Pop());
}
于 2013-10-03T15:03:17.967 回答