一个基本问题:我正在编写一个带有菜单的C#应用程序,每个菜单项都将打开一个新窗口。这些窗口都是Window类的实例。
而不是写:( EditSettings是目标窗口的所需名称)
Window EditSettings = new Window();
EditSettings.Show();
对于每一个,我是否可以编写类似下面的方法来创建实例?
private void OpenSelectedWindow(Window n)
{
n = new Window();
n.Show();
}
我无法调用该方法 - 我尝试过:
OpenSelectedWindow(EditSettings);
哪个不起作用("名称EditSettings在当前上下文中不存在'),或
OpenSelectedWindow(Window EditSettings);
哪个不起作用
我对C#感到很生气,觉得这个问题很糟糕,但我似乎无法在互联网上找到这方面的例子。你能用方法创建一个类的实例吗?我错过了什么?谢谢。
修改
代码全部发生在主命名空间中:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
// Attempting to write a method that instances the class
private void OpenSelectedWindow(Window n)
{
n = new Window();
n.Show();
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
//Calling the method
OpenSelectedWindow(EditSettings);
}
}
我有两个.xaml文件 - EditSettings.xaml(空)和MainWindow.xaml。
答案 0 :(得分:1)
您可以使用泛型:
private T OpenSelectedWindow<T>() where T : Window, new()
{
T n = new T();
n.Show();
return n;
}
使用如下方法:
EditSettings editSettingsWindow = OpenSelectedWindow<EditSettings>();