2016-10-17 31 views
4

私は、テキストボックス内のユーザーから価値のあるプログラムを作成し、その値をComboBoxに追加しても問題ありませんが、プログラムを終了すると、配列を使用しなかったすべての情報が失われましたが、プログラムを終了した後は永久保存されますか? plzは私がXMLでコンボボックスに動的な値を追加しますか?

MY C#コード

namespace PopupDemo 
 
{ 
 
    public partial class MainWindow : Window 
 
    { 
 
     public MainWindow() 
 
     { 
 
      InitializeComponent(); 
 
     } 
 

 
     private void Show_Click(object sender, RoutedEventArgs e) 
 
     { 
 
      MyPopup.IsOpen = true; 
 
     } 
 

 
     private void Add_Click(object sender, RoutedEventArgs e) 
 
     { 
 

 
      comboBox.Items.Add(textbox.Text); 
 
      MyPopup.IsOpen = false; 
 
     } 
 

 
     private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
 
     { 
 

 
     } 
 
    } 
 
}

MY XMLコード

<Window x:Class="PopupDemo.MainWindow" 
 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
 
     Title="ToolTip Demo" 
 
     Height="335.461" 
 
     Width="457.092"> 
 
    <Grid Margin="10"> 
 
     <Button Click="Show_Click" Margin="82,179,68,30">Show Popup</Button> 
 
     <Popup Name="MyPopup" 
 
       Placement="Mouse" 
 
       HorizontalOffset="-100" 
 
       VerticalOffset="-100" 
 
       AllowsTransparency="True" 
 
       
 
       > 
 
      <Grid> 
 
       <Ellipse Width="300" Height="300" Fill="Aquamarine"/> 
 
       <TextBox Width="200" Height="40" Name="textbox" ></TextBox> 
 
       <Button Click="Add_Click" Margin="77,209,63,60" Height="50" Width="150" RenderTransformOrigin="0.532,3.873">Add</Button> 
 
      </Grid> 
 
     </Popup> 
 
     <ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="82,63,0,0" VerticalAlignment="Top" Width="279" Height="83" SelectionChanged="comboBox_SelectionChanged"/> 
 
    </Grid> 
 
</Window>
ここ

答えて

2

があなたの書き方であることを行うことができますどのように私を助けてテキストボックス。テキストをXMLファイルに追加します。ここ

//recreates file if there is already one. 
    XmlTextWriter xmlFile = new XmlTextWriter("comboXml.xml", System.Text.UTF8Encoding.UTF8); 


    //intened formatting 
    xmlFile.Formatting = Formatting.Indented; 
    private void Add_Click(object sender, RoutedEventArgs e) 
      { 
       comboBox.Items.Add(textbox.Text); 
      try 
      { 
       xmlFile.WriteStartDocument(); 
       xmlFile.WriteStartElement("myData"); 
       xmlFile.WriteElementString("myAttribute", textbox.Text); 


       xmlFile.WriteEndElement(); 
       xmlFile.Close(); 

      } 
      catch (Exception ex) 
       { 
       MessageBox.Show("Xml Writing Failed:" + ex.Message); 
       } 


       MyPopup.IsOpen = false; 
    } 

とは、あなたが、今XMLファイル

private void PopulateComboBox() 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("myAttribute", typeof(string)); 




     XmlTextReader readXml = new XmlTextReader("comboXml.xml"); 
     try 
     { 
      while (readXml.Read()) 
      { 
       if (readXml.NodeType == XmlNodeType.Element) 
       { 
        switch (readXml.Name) 
        { 
         case "myAttribute": 
          DataRow dr = dt.NewRow(); 
          dr["myAttribute"] = readXml.ReadString() ; 
          dt.Rows.Add(dr); 
          break; 
        } 
       } 
      } 

      readXml.Close(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Xml connection failed: " + ex.Message); 
     } 


     if (dt.Rows.Count > 0) 
     { 
      comboBox.DataSource = dt; 
      comboBox.ValueMember = "myAttribute"; 
      comboBox.DisplayMember = "myAttribute";  
     } 

     else 
     { 
      MessageBox.Show("No source found!", "Warning"); 
     } 

    } 

から移入MainWindow_LoadイベントにPopulateComboBoxを呼び出す方法です。完了!

+0

データソース宣言エラー – Marina

+0

@マリナ私はタイプミスを犯し、 'ValueMember'と' DisplayMember'を追加するのを忘れました。私の答えを更新しました。今すぐご確認ください。 – Badiparmagi

+0

あなたはhttp://chat.stackoverflow.com/rooms/126005/wpfに参加できますか – Marina

関連する問題