gpt4 book ai didi

c# - 如何将参数传递给 C# 中的新 RoutedEventHandler 方法?

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:57 25 4
gpt4 key购买 nike

我正在尝试制作一个应用程序启动器,最后我试图将额外的参数传递给 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);
}
}
}

最佳答案

您不能更改 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( ));
}

关于c# - 如何将参数传递给 C# 中的新 RoutedEventHandler 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com