2017-01-25 14 views
0
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 


    } 

    private void cmdAdd_Click(object sender, EventArgs e) 
    { 

     OpenFileDialog OP = new OpenFileDialog(); 
     OP.Title = "Please select the wanted .exe"; 
     string FileName = String.Empty; 
     string PathName = String.Empty; 
     OP.InitialDirectory = @"C:\Users\" + Environment.UserName.ToString() + @"\Desktop"; 
     OP.DefaultExt = ".exe"; 
     OP.Filter = "Game executable (*.exe) |*.exe"; 
     DialogResult Ergebnis = OP.ShowDialog(); 

     if (Ergebnis == DialogResult.OK) 
     { 
      FileInfo File = new FileInfo(OP.FileName); 

      if (File.Exists) 
      { 
       PathName = File.FullName; 
      } 
     } 


     if (PathName != String.Empty) 
     { 

      textBox1.Text = PathName; 
      listBox1.Items.Add(PathName); 
     } 
    } 

    private void cmdStart_Click(object sender, EventArgs e) 
    { 
     string SelectedItem = ""; 
     if (listBox1.SelectedItem != null) 
     { 
      SelectedItem = listBox1.SelectedItem.ToString(); 
      /*MessageBox.Show(SelectedItem);*/ 
     } 

     Process Pro = new Process(); 
     Pro.StartInfo.FileName = SelectedItem; 
     DialogResult Ergebnis2 = MessageBox.Show("Would you like to start the Game right now?", "Game start?", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 

     if (Ergebnis2.Equals(true)) 
     { 
      try 
      { 
       Pro.Start(); 
      } 
      catch (Exception) 
      { 
       MessageBox.Show("The Start of the Program was aborted!\r\nOr you didn't specify the right Path!", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); 
      } 
     } 

    } 

    private void cmdSave_Click(object sender, EventArgs e) 
    { 
     StreamWriter SaveFile = new StreamWriter(@"C:\Users\" + Environment.UserName.ToString() + @"\Desktop\savedgames.txt"); 
     foreach (var item in listBox1.Items) 
     { 
      SaveFile.WriteLine(item.ToString()); 
     } 

     SaveFile.Close(); 
     MessageBox.Show("EZPZ"); 
    } 

    private void cmdLoad_Click(object sender, EventArgs e) 
    { 
     StreamReader sr = new StreamReader(@"C:\Users\" + Environment.UserName.ToString() + @"\Desktop\savedgames.txt"); 
     string line = string.Empty; 
     try 
     { 

      line = sr.ReadLine(); 

      while (line != null) 
      { 
       this.listBox1.Items.Add(line); 

       line = sr.ReadLine(); 
      } 

      sr.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message.ToString()); 
     } 
     finally 
     { 
      sr.Close(); 
     } 
    } 
} 

Привет StackOverflow-сообщества,Как загрузить контуры в ListBox, а затем запустить файл на выбранный индекс

Так я пытался быть в состоянии запустить выбранный файл (из Listbox), нажав Start. Элементы в Listbox загружаются из .txt-файла. Но кажется, что путь, который я получаю (из .txt-файла), на самом деле не тот, который был написан внутри.

Например: H: \ Exe \ 556689600.exe записывается внутри .txt-файла, но когда я проверяю при приостановке приложения, значение SelectedItem равно «H: (две обратные косые черты) Exe (две обратные косые черты) 556689600 .exe ", поэтому мне бы хотелось, чтобы это был файл H: \ Exe \ 556689600.exe, чтобы он мог быть правильно запущен.

EDIT: Основная проблема заключается в том, что я не могу запустить .exe, который я выбрал (через cmdStart), и я не знаю почему.

Пожалуйста, имейте в виду, что я (как вы можете видеть из кода), не очень опытный в программировании, и что я не являюсь носителем английского языка, поэтому прошу прощения за любые грамматические ошибки/логические ошибки.

Спасибо заранее, Стивен

+1

Это нормально. Обратная косая черта используется как escape-символ, поэтому по путям вам нужно 2 – Pikoh

ответ

1

Проблема с:

 DialogResult Ergebnis2 = MessageBox.Show("Would you like to start the Game right now?", "Game start?", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
     if (Ergebnis2.Equals(true)) 

DialogResult содержит данные ENUM 'DialogResult.Yes', так что вам нужно сравнить его к этому значению, а не (правда).

Edit:
Я предлагаю практиковать работы с отладкой:
В этом случае, я покрыл контрольную точку на методе «cmdstart_Click» и последовавшую за ним шаг за шагом (б F10)
Я видел, что мы прыгаем над 'if' и проверить, почему.

+1

Спасибо, что сработало! –

+0

Приветствуется :) Проверьте изменения: Я написал шаги, которые я использовал для отладки –