Hi Jack,
try demo in attached txt:
[ WPF ] How to execute a * .exe with a button in a main window, whose path is in a TextBox of a second window, please help me.
![](https://techprofile.blob.core.windows.net/images/AB_wgbHts0mO38n2pyQrUQ.png?8D861B)
Hi, I'm still a newbie. I have my project, in which I have 2 windows, a Main Window (Launcher.xaml) and another Second Window (Configuration.xaml). In the Main Window I have 2 buttons; a button that executes an * .exe (start game), whose path or address is in a TextBox in the second window. And the second Button calls the second window.
In the second window I have a TextBox and 2 Buttons, One is the one that calls the "OpenFileDialog" that when clicked, sends me a search dialog for the * .exe file (game.exe) and when I choose that program to execute, this write the address or path in the TextBox something like this; "D: \ folder \ game.exe". The following button saves the direction or route of the game to be able to execute it in the main window.
Well my question is how I can make the button of the main window (Start Game) execute the game whose address or path is in the TextBox of the second window, I would be very grateful if you could help me with it, please. Or some other alternative, I am already very grateful for it and its help.
I attach an image of my project:
I also attach my project file:
https://drive.google.com/file/d/1Yknpp5eL2qMbyHaHOSR_Cmmfho4pK7aB/view?usp=sharing
Sorry for the inconvenience I really need your help. Thank you so much...
-
Peter Fleischer (former MVP) 19,316 Reputation points
2020-08-19T06:44:32.613+00:00
3 additional answers
Sort by: Most helpful
-
DaisyTian-1203 11,621 Reputation points
2020-08-20T09:01:48.387+00:00 I will show you a easy way not using ViewModel to get the date from the child window.
1.Add the below code to your MainWindow.xaml.csstring ExeFileName; public void GetExeFileName(string value) { ExeFileName = value; } private void BtnEscogerJuego_Click(object sender, RoutedEventArgs e) { RutaDelJuego ConfigRuta = new RutaDelJuego(); ConfigRuta.sendMessage = GetExeFileName; ConfigRuta.ShowDialog(); }
2.Add the below code in your WpfLanzarJuego.Xaml.cs:
public delegate void SendMessage(string value); public SendMessage sendMessage; private void BtnGuardarSalir_Click(object sender, RoutedEventArgs e) { sendMessage(RutaTextBox.Text.ToString()); this.Close(); }
3.You can use the below code to host the exe in your MainWindow:
-
Peter Fleischer (former MVP) 19,316 Reputation points
2020-08-21T10:42:27.24+00:00 Hi Jack,
without ViewModel you can use for DataContext in second window the CodeBehind of MainEindow:<Window x:Class="WpfApp1.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:WpfApp1" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <StackPanel> <Button Content="Load Second Window" Click="Button_Click_1"/> <Button Content="Execute exe" Click="Button_Click_2"/> </StackPanel> </Window>
CodeBehind:
And second Window:
-
jack pelon 96 Reputation points
2020-08-22T04:01:53.66+00:00 Hello Miss DaisyTian-MSFT, and Mr. PeterFleischer-3316. I am very very grateful for your help, I am beginning to understand the "Binding, command and ViewModel". With a little self study I will understand that even more.
Miss "DaisyTian" I like your code very much and I am doing tests and learning from it, I realize that I am just beginning to climb the mountain of programming in C # WPF, thank you very much ...
I hope you have a good day and it will always be good for you. A warm hug from Peru. Thank you very much thank you friends ...