2017-07-16 9 views
0

私のプログラムは実行されていると思いますが、実行時に作成されたものは保存されません。これどうやってするの? Gamebuttonメソッドをファイルに入れて、プログラムをロードするたびにファイルを呼び出すことはできますか?そして私はこれをどのようにして行うのですか?実行時に行われたことを永久に保存します

xaml.cs

public void Gamebutton() 
    {   
     // Button to start a Game 
     DockPanel panel = new DockPanel(); 
     main_panel.Children.Add(panel); 

     Button Gamebutton = new Button(); 
     { 
      Gamebutton.Height = 50; 
      Gamebutton.Width = 500; 
      Gamebutton.Content = btname.Text; 
      Gamebutton.FontSize = 24; 
      Gamebutton.BorderThickness = new Thickness(0); 
      Gamebutton.Margin = new Thickness(10, 10, 0, 10); 
      Gamebutton.Click += Run_Game; 
      Gamebutton.Tag = btpath.Text; 
      panel.Children.Add(Gamebutton);    
     } 

     // del Gamebutton 
     Button Delbutton = new Button(); 
     { 
      Delbutton.Height = 50; 
      Delbutton.Content = "X"; 
      Delbutton.FontSize = 24; 
      Delbutton.BorderThickness = new Thickness(0); 
      Delbutton.Margin = new Thickness(0, 10, 10, 10); 
      Delbutton.Click += Del_Gamebutton; 
      panel.Children.Add(Delbutton); 
     } 

     // Contextmenu for Gamebutton 
     ContextMenu = new ContextMenu(); 
     { 
      Gamebutton.ContextMenu = ContextMenu; 

      MenuItem rename = new MenuItem(); 
      rename.Header = "Rename"; 
      rename.Click += Rename; 
      ContextMenu.Items.Add(rename); 

      MenuItem Pathd = new MenuItem(); 
      Pathd.Header = "Path D:"; 
      Pathd.Click += Pathdtotag; 
      ContextMenu.Items.Add(Pathd); 

      MenuItem Pathe = new MenuItem(); 
      Pathe.Header = "Path E:"; 
      Pathe.Click += Pathetotag; 
      ContextMenu.Items.Add(Pathe); 

      MenuItem del = new MenuItem(); 
      del.Header = "Delete"; 
      del.Click += Del_Gamebutton; 
      ContextMenu.Items.Add(del); 
     } 

     // redefinds Gamepath E:\ via Contextmenu 
     void Pathetotag(object sender, EventArgs e) 
     { 
      OpenFileDialog Pathpick = new OpenFileDialog(); 
      Pathpick.InitialDirectory = @"E:\Games"; 
      Pathpick.ShowDialog(); 
      Gamebutton.Tag = Pathpick.FileName; 
     } 

     // redefinds Gamepath D:\ via Contextmenu 
     void Pathdtotag(object sender, EventArgs e) 
     { 
      OpenFileDialog Pathpick = new OpenFileDialog(); 
      Pathpick.InitialDirectory = @"D:\Games"; 
      Pathpick.ShowDialog(); 
      Gamebutton.Tag = Pathpick.FileName; 
     } 

     // Renaming Window in Contextmenu 
     void Rename(object sender, EventArgs e) 
     { 
      Window Renamewindow = new Window(); 
      Renamewindow.Name = "Test"; 
      Renamewindow.Width = 250; 
      Renamewindow.Height = 120; 
      Renamewindow.Title = "Rename"; 

      Grid renamegrid = new Grid(); 
      Renamewindow.Content = renamegrid; 

      StackPanel stckpnl = new StackPanel(); 
      renamegrid.Children.Add(stckpnl); 

      TextBox renametxtbox = new TextBox(); 
      renametxtbox.Height = 20; 
      renametxtbox.Width = 200; 
      renametxtbox.HorizontalAlignment = HorizontalAlignment.Center; 
      renametxtbox.Margin = new Thickness(10, 10, 10, 10); 
      renametxtbox.KeyDown += Renameevent;     
      stckpnl.Children.Add(renametxtbox); 

      Renamewindow.Show(); 
      renametxtbox.Focus(); 
     }    

     // Renames Gamebutton Content via Renaming Window 
     void Renameevent(object sender, KeyEventArgs e) 
     { 
      string renametxt = ((sender as TextBox).Text as String); 
      if (e.Key == Key.Return) 
      { 
       Gamebutton.Content = renametxt; 
      } 
     } 

     // Run Game 
     void Run_Game(object sender, EventArgs e) 
     { 
      string Path = ((sender as Button).Tag as String); 
      Process Gamestart = new Process(); 
      { 
       Gamestart.StartInfo.FileName = Path; 
       if (Path == "") // in case no Path is selected, programm doesnt crash 
       { 
        MessageBox.Show("Button has no Path"); 
       } 
       else 
       { 
        Gamestart.Start(); 
       } 
      } 
     } 

     // del Gamebutton via Contextmenu 
     void Del_Gamebutton(object sender, EventArgs e) 
     { 
      panel.Children.Remove(Gamebutton); 
      panel.Children.Remove(Delbutton); 
     } 
    } 

XAML

<Window x:Class="Games_Loader.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:Games_Loader" 
    mc:Ignorable="d" 
    Title="Games Loader" Height="600" Width="800" ResizeMode="NoResize"> 
<Grid>   
    <StackPanel x:Name="menu_panel" HorizontalAlignment="Left" Width="200" Background="LightGray"> 
     <TextBlock>Gamename:</TextBlock> 
     <TextBox x:Name="btname" Margin="10,10,10,10" KeyDown="Btname_Enter"/> 
     <TextBlock>Path:</TextBlock> 
     <TextBox x:Name="btpath" Margin="10,10,10,10"/> 
      <DockPanel> 
       <Button Height="40" Width="85" x:Name="btpathclickerd" Click="Btpath_Click_d" Margin="10,10,0,0">Add Path D:\</Button> 
       <Button Height="40" Width="85" x:Name="btpathclickere" Click="Btpath_Click_e" Margin="0,10,0,0">Add Path E:\</Button> 
      </DockPanel> 
     <Button x:Name="add_game" Height="40" Margin="5,50,5,0" Click="Add_game_Click">Add Game</Button> 
    </StackPanel> 
    <ScrollViewer Margin="200,0,0,0" VerticalScrollBarVisibility="Auto" Grid.ColumnSpan="2"> 
     <StackPanel x:Name="main_panel" Background="Gray"/> 
    </ScrollViewer> 
</Grid> 

答えて

1

JSONのシリアル化を使用するときアプリ出口ファイルに書き込む、その後、オブジェクトのいくつかの種類に設定を保存します。アプリの起動時に設定を読み込み、デシリアライズする。

関連する問題