我的程序正在运行并且正在执行它应该执行的操作,但它当然不会保存在运行时创建的内容。我怎样才能做到这一点?我可以将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>
答案 0 :(得分:1)
将您的设置保存到某种对象,然后使用Json序列化并在app退出时将其写入文件。在应用启动时加载和反序列化设置。