我有一个组合框,我需要允许用户将新项目添加到此组合框中,以便每次运行应用程序时新添加的项目都会存在。你能为我推荐一些方法吗?
<?xml version="1.0" encoding="utf-8"?>
<Items>
<Items>
<Company>wd</Company>
<Fluid>dswq</Fluid>
<Price>qw</Price>
</Items>
</Items>
答案 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}}