允许用户将新项添加到组合框C#

时间:2017-03-02 08:13:46

标签: c#

我有一个组合框,我需要允许用户将新项目添加到此组合框中,以便每次运行应用程序时新添加的项目都会存在。你能为我推荐一些方法吗?

    <?xml version="1.0" encoding="utf-8"?>
<Items>
  <Items>
    <Company>wd</Company>
    <Fluid>dswq</Fluid>
    <Price>qw</Price>
  </Items>
</Items>

3 个答案:

答案 0 :(得分:1)

你可以查看akavache。它是基于SQLite3数据库的持久键值缓存。对我很有用。

另外,你可以决定每个用户还是每台机器保存的保存值是否超高。

然后你可以将ObservableCollection绑定到你的组合框ItemsSource并在循环中添加保存的项目。

答案 1 :(得分:0)

如果你使用文本文件(没有加密,任何人都可以访问等),你可以这么做。这是一个快速的表格,可以满足你的要求。

public partial class Form1 : Form
    {
        private string[] options;

        public Form1()
        {
            InitializeComponent();
            initTextBox();
        }

        private void initTextBox()
        {

            try
            {
                options = File.ReadAllLines("input.txt");
            }
            catch (FileNotFoundException ex)
            {
                File.CreateText("input.txt").Close();

                options = File.ReadAllLines("input.txt");
            }
            if (options.Length == 0) return;
            foreach (var item in options)
            {
                comboBox.Items.Add(item);
            }
        }

        private void button_addItem_Click(object sender, EventArgs e)
        {
            comboBox.Items.Add(textBox_newItem.Text);
            File.WriteAllLines("input.txt", options);
        }
    }

如果您想要更安全的版本,请将File I / O替换为其他人建议的数据库I / O.

答案 2 :(得分:0)

你可以尝试这个,这只是你问题的一个简单表示:

首先将文件加载到XDocument:

 var studentLst = xml.Descendants("Items").Select(d =>
 new
 {
   Company = d.Element("Company").Value,
   Fluid = d.Element("Fluid").Value,
   Price = d.Element("Price").Value
}).ToList();

然后将其作为列表加载到匿名类型:

comboBox1.DataSource = studentLst.Select(x => x.Company).ToList();

然后选择要绑定到Combobox的属性(在这种情况下,我选择公司):

  <?xml version="1.0" encoding="utf-8"?>
<Item>
  <Items>
     <Company>wd</Company>
     <Fluid>dswq</Fluid>
     <Price>qw</Price>
  </Items>
</Item>

P.S。这是我的XML文件的格式(我将第一个节点设为'Item',以便我可以看到所有'Items'节点):

{{1}}