2016-10-30 58 views
1

嗨,我是C#新手,我正在學習它。我想代碼我試圖讓應用程序啓動和結束時我試圖通過和額外參數RoutedEventHandler方法調用但它給我的錯誤,我試圖尋找它在谷歌,但我不明白一個該死的東西。 (我是小白),所以這裏是代碼,請看看和it.Thanks如何將參數傳遞給C#中新的RoutedEventHandler參數?

namespace Button_Launcher 
{ 

    public partial class MainWindow : Window 
    { 
     private string line; 

     public MainWindow() 
     { 
      InitializeComponent(); 

     } 

     private void button_Click(object sender, RoutedEventArgs e) 
     { 

      OpenFileDialog fileName = new OpenFileDialog(); 
      fileName.Filter = "executables (.exe)|*.exe"; 
      fileName.ShowDialog(); 
      StreamWriter writer = new StreamWriter("E:/Config.txt",true); 
      writer.WriteLine(fileName.FileName); 
      writer.Close(); 
      textBox.Text = fileName.FileName; 



     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      string file = ("E:/Config.txt"); 

      StreamReader Reader = new StreamReader(file, Encoding.ASCII); 
      List<string> appList = new List<string>(); 

      List<string> Items = new List<string>(); 
      int count = 1; 
      while ((line = Reader.ReadLine()) != null) 
      { 
       makeButton(line,count); 
       count++; 
      } 
      Reader.Close(); 

     } 

     public void makeButton(string link,int count) 
     { 
      string[] mySplit = link.Split(new char[] { '\\' }); 
      string[] name = mySplit.Last().Split(new char[] { '.' }); 
      string fName = name.First(); 
      string buttonName = fName; 
      Button newBtn = new Button(); 
      newBtn.Content = buttonName; 
      newBtn.Height = 30; 
      newBtn.Width = 70; 
      newBtn.Margin = new Thickness(-60, 90*count/1.5, 180,80); 
      StackPanel sp = new StackPanel(); 
      sp.Children.Add(newBtn); 
      mainGrid.Children.Add(sp); 
      newBtn.Click += new RoutedEventHandler(launchApp(link)); 
      //launchApp(link); 


     } 
     private void launchApp(string link,object sender, RoutedEventArgs e) 
     { 

      Process.Start(link); 
     } 
    } 
} 
+0

,因爲你改變了方法簽名。你可以在這裏看到http://stackoverflow.com/a/8109471/4767498工作 –

回答

0

你不能改變RoutedEventHandler的方法簽名。相反,嘗試將鏈接數據存儲在按鈕的Tag屬性中。然後在該方法中,您可以將發件人對象轉換爲按鈕並訪問標籤屬性。

public void makeButton(string link,int count) 
{ 
    string[] mySplit = link.Split(new char[] { '\\' }); 
    string[] name = mySplit.Last().Split(new char[] { '.' }); 
    string fName = name.First(); 
    string buttonName = fName; 
    Button newBtn = new Button(); 
    newBtn.Content = buttonName; 
    newBtn.Height = 30; 
    newBtn.Width = 70; 
    newBtn.Tag = link; 
    newBtn.Margin = new Thickness(-60, 90*count/1.5, 180,80); 
    StackPanel sp = new StackPanel(); 
    sp.Children.Add(newBtn); 
    mainGrid.Children.Add(sp); 
    newBtn.Click += launchApp; 
    //launchApp(link); 


} 
private void launchApp(object sender, RoutedEventArgs e) 
{ 
    var btn = sender as Button; 
    if(btn == null) 
     return; 

    Process.Start(btn.Tag.ToString()); 
} 
+0

感謝兄弟..:d – laslavinco