2017-07-16 19 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序列化并将它写入文件时,应用程序退出。在应用程序启动时加载和反序列化设置。