【发布时间】:2014-03-31 08:30:28
【问题描述】:
一个基本问题:我正在编写一个有菜单的 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。
【问题讨论】:
-
不清楚您的方法在哪里声明或尝试使用它的代码在哪里。另外,如果您要忽略它的值,为什么还要使用参数呢?您绝对可以在方法中创建一个类的实例,但我怀疑这不是您真正感兴趣的。不幸的是,很难看到您在它的问题中试图做什么当前形式。
-
对不起,我没有意识到您需要更多代码,我会编辑并添加更多。
-
嗯,它比其他任何东西都更清晰。例如,“EditSettings 是目标窗口的所需名称”是什么意思?您实际上是在谈论从
Window创建不同类型的派生 实例,并且您有一个名为EditSettings的类? -
基本上,如果我采用 OpenSelectedWindow 方法,并将 EditSettings 作为参数传递,只要方法中有“n”,我就会用“EditSettings”(如字符串)替换它,如果一切正常,它将创建一个名为 EditSettings 的新窗口。
-
一个对象没有被“称为”任何东西。 变量 有名称,但不清楚这是否是您所追求的……方法中的变量名称与其他地方无关。如果您对设置窗口的
Name属性感兴趣,那么只需通过字符串设置该属性即可。
标签: c# wpf methods parameters window