查找打开新窗口的方法名(c# wpf)



我试图找到一种方法来获得弹出一个新窗口的方法调用的字符串名称。我有三个按钮点击事件处理程序,这将打开新窗口,但我需要知道哪个调用。show ();

    private void buttonSettingsPortfolio1_Click(object sender, RoutedEventArgs e)
    {
        var settingsWindow = new MobilityPortfolioSettings();
        settingsWindow.Show();
    }
    private void buttonSettingsPortfolio2_Click(object sender, RoutedEventArgs e)
    {
        var settingsWindow = new MobilityPortfolioSettings();
        settingsWindow.Show();
    }
    private void buttonSettingsPortfolio3_Click(object sender, RoutedEventArgs e)
    {
        var settingsWindow = new MobilityPortfolioSettings();
        settingsWindow.Show();
    }

我不想有三个独立的窗口!是否有一个开放的事件处理程序参数,我可以从调用者获取?

那么,您可以简单地在MobilityPortfolioSettings类中添加一个公共变量,并在每个方法中设置其值,例如:在buttonSettingsPortfolio1_Click中添加MobilityPortfolioSettings。变量= 1,以此类推

这里Console.write(triggeredBy);可以通过日志记录到文件或其他方式输出该值。此值将指示您的代码所使用的路径。

private void buttonSettingsPortfolio1_Click(object sender, RoutedEventArgs e)
    {
        Open("buttonSettingsPortfolio1_Click");
    }
    private void buttonSettingsPortfolio2_Click(object sender, RoutedEventArgs e)
    {
        Open("buttonSettingsPortfolio2_Click");
    }
    private void buttonSettingsPortfolio3_Click(object sender, RoutedEventArgs e)
    {
       Open("buttonSettingsPortfolio3_Click");
    }
    private Open(string triggeredBy){
        Console.write(triggeredBy); // You can write to file or output in some different way here.
        var settingsWindow = new MobilityPortfolioSettings();
        settingsWindow.Show();
}

试试这个:

  1. 设置sender作为按钮,然后得到它的名字。
  2. 更改MobilityPortfolioSettings构造函数,使其需要一个字符串参数。
  3. 将按钮名称传递给构造函数。

    private void buttonSettingsPortfolio1_Click(object sender, RoutedEventArgs e)
    {
        string buttonName = "";
        if (sender is Button)
            buttonName = ((Button)sender).Name;
        Window settingsWindow = new MobilityPortfolioSettings(buttonName);
        settingsWindow.Show();
    }
    

请使用Window作为变量类型,而不是var。

欢呼

最新更新