2017-03-02 11 views
-3

私はコンボボックスを持っているので、アプリケーションを実行するたびに新しいアイテムがこのコンボボックスに追加されるようにする必要があります。私のために方法を提案できますか?コンボボックスに新しいアイテムを追加できるようにするC#

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

ストアファイルやデータベースに新規追加コンボボックスの項目、および負荷:これは私のXMLファイルの形式である(私は私がすべての「アイテム」ノードを見ることができるように、「項目」などの最初のノードを作りました)あなたがアプリを実行するたびにこのファイル(またはデータベース)のコンボボックスの項目 –

+0

私はこの方法を考えていますし、xmlファイルを試していますが、あなたが助けることができるなら、それを使う方法はわかりません。 @MikhailNeofitov –

+1

SOはコーディングサービスではありません。あなたがそれに問題がある場合は、xmlで作業する方法を検索して戻ってみてください。 –

答えて

1

akavacheを確認できます。 SQLite3データベースに基づく永続的なキー値キャッシュです。私にとって素晴らしい作品です。

プラス側では、保存された値をユーザー単位またはマシン単位で保存するかどうかを決定でき、超高速です。

次にObservableCollectionをコンボボックスのItemsSourceにバインドし、保存したアイテムをループに追加するだけで済みます。

+0

私はそれを見ていただきありがとうございます@ user3512524 –

+0

また、あなたのデータを暗号化することができます。あなたはxmlをキャッシュに入れることができます。そうしないと、akavacheはあなたのためにシリアル化しようとします。私は3つのコンボボックスを扱っているので、 –

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に置き換えてください。その後

var xml = XDocument.Load("D:\\temp.xml"); 

リストとして匿名型にそれをロードします:

まずXDocumentにファイルをロードします。

+0

私はxmlを好きです。 –

+0

https://msdn.microsoft.com/en-us/library/mt693072.aspx このリンクには必要な情報が含まれていなければなりません。 –

0

あなたはこれを試すことができますが、これは、あなたの質問に単純な表現です

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(); 

P.S.

<?xml version="1.0" encoding="utf-8"?> 
<Item> 
    <Items> 
    <Company>wd</Company> 
    <Fluid>dswq</Fluid> 
    <Price>qw</Price> 
    </Items> 
</Item> 
関連する問題