2017-07-16 1 views
0

Ich habe mein Programm ausgeführt und tun, was es tun soll, aber es speichert natürlich nicht die Dinge zur Laufzeit erstellt. Wie kann ich das machen? Kann ich die Gamebutton Methode in eine Datei einfügen und die Datei jedes Mal aufrufen, wenn ich das Programm lade? Und wie mache ich das?Speichern Sie, was für die Laufzeit dauerhaft getan wird

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> 

Antwort

1

Ihre Einstellungen zu irgendeiner Art von Objekt speichern, dann Json serialize verwenden und schreiben Sie es, wenn App Ausgang Datei. Laden und Deserialisieren von Einstellungen beim Start der App

Verwandte Themen