none
Process.Start(@"'filename'"); RRS feed

  • Frage

  • Guten Tag,

    Ich bin im Moment daran ein Programm zu machen, mit dem man Spiele hinzufügen und starten kann,

    "filename" ist ja, die file, aber wie bekomme ich meine file (filename) in mein "Process.Start(@"filename'"); also das sich das ausgewählte Programm öffnet?

    Quellcode

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    using System.Diagnostics;
    
    namespace GymFucker
    {
        public partial class frmMain : Form
        {
            public frmMain()
            {
                InitializeComponent();
            }
    
            private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
            {
                Program.login.Close();
            }
    
            private void frmMain_Load(object sender, EventArgs e)
            {
                btnOpen.Enabled = false;
            }
    
               private void btnClose_Click_1(object sender, EventArgs e)
            {
                Environment.Exit(1);
            }
    
            private void btnOpenFileDialog_Click(object sender, EventArgs e)
            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Title = "Select Game!";
                openFileDialog1.Filter = "Windows Application | *.exe";
                string filename;
                
                if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)     
                {
                    filename = openFileDialog1.FileName;
                    MessageBox.Show(filename);
                    lblFile.Text = filename;
                    btnOpen.Enabled = true;
                }
                }
    
            private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
            {
    
            }
    
            private void btnOpen_Click(object sender, EventArgs e)
            {
                Process.Start(@"'filename'");
            }
        }
    }




    Samstag, 11. Februar 2017 19:10

Antworten

  • Hallo Yannik,

    eigentlich einfach nur:

    Process.Start( filename );

    Da Du "filename" aber in deinem Eventhandler deklariert hast, ist diese Variable auch nur in dieser Methode verfügbar. Daher solltest Du "filename" auf Klassenebene als Variable oder Eigenschaft deklarieren und dieser dann den Wert zuweisen und wieder auslesen.

    namespace DeinNamespace
    {
        public partial class frmMain : Form
        {
            public String SelectedFileName { get; set; }
    
            ...
    
            private void btnOpenFileDialog_Click(object sender, EventArgs e)
            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Title = "Select Game!";
                openFileDialog1.Filter = "Windows Application | *.exe";
                
                if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)     
                {
                    this.SelectedFileName = openFileDialog1.FileName;
                    MessageBox.Show(filename);
                    lblFile.Text = this.SelectedFileName;
                    btnOpen.Enabled = true;
                }
            }
    
            private void btnOpen_Click(object sender, EventArgs e)
            {
                Process.Start( this.SelectedFileName );
            }
        }
    }

    P.S.: Wähl deine Namen (bspw. der des Namespace) etwas weniger ... sagen wir ... "komisch".

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Samstag, 11. Februar 2017 19:53
    Moderator

Alle Antworten

  • Hallo Yannik,

    eigentlich einfach nur:

    Process.Start( filename );

    Da Du "filename" aber in deinem Eventhandler deklariert hast, ist diese Variable auch nur in dieser Methode verfügbar. Daher solltest Du "filename" auf Klassenebene als Variable oder Eigenschaft deklarieren und dieser dann den Wert zuweisen und wieder auslesen.

    namespace DeinNamespace
    {
        public partial class frmMain : Form
        {
            public String SelectedFileName { get; set; }
    
            ...
    
            private void btnOpenFileDialog_Click(object sender, EventArgs e)
            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Title = "Select Game!";
                openFileDialog1.Filter = "Windows Application | *.exe";
                
                if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)     
                {
                    this.SelectedFileName = openFileDialog1.FileName;
                    MessageBox.Show(filename);
                    lblFile.Text = this.SelectedFileName;
                    btnOpen.Enabled = true;
                }
            }
    
            private void btnOpen_Click(object sender, EventArgs e)
            {
                Process.Start( this.SelectedFileName );
            }
        }
    }

    P.S.: Wähl deine Namen (bspw. der des Namespace) etwas weniger ... sagen wir ... "komisch".

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Samstag, 11. Februar 2017 19:53
    Moderator
  • ups ja hehe :D
    Samstag, 11. Februar 2017 20:03