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>