我有一個MainWindow和另一個名爲MyClass的類的應用程序。 MyClass中有一個方法,我需要從MainWindow類訪問。 MyClass在應用程序加載時加載。如何調用從主窗口中MyClass的方法,而無需創建MyClass的一個新實例:從MainWindow訪問類的實例
MyClass class = new MyClass();
?
我有一個MainWindow和另一個名爲MyClass的類的應用程序。 MyClass中有一個方法,我需要從MainWindow類訪問。 MyClass在應用程序加載時加載。如何調用從主窗口中MyClass的方法,而無需創建MyClass的一個新實例:從MainWindow訪問類的實例
MyClass class = new MyClass();
?
的直截了當回答你的問題是,以紀念類方法,如靜態的。這將允許你從任何地方調用它。
另一方面,這可能不是你真正需要的。因此,如果您在應用程序類中開始創建MyClass
,那麼您需要公開MyClass
實例,例如,通過應用程序屬性。看看示例代碼。
public class MyClass
{
public void Method()
{
// ...
}
}
您的應用程序的代碼:
public partial class App
{
public MyClass MyClassInstance { get; private set; }
private void Application_Startup(object sender, StartupEventArgs e)
{
MyClassInstance = new MyClass();
}
}
和窗戶的地方你打電話類的方法的代碼:
public partial class MainWindow : Window
{
private void Button_Click(object sender, RoutedEventArgs e)
{
((App)Application.Current).MyClassInstance.Method();
}
}
+1在應用程序啓動過程中創建一些內容和一個'static'都可以看作全局變量,但是如果你使用'static',其他地方的'MyClass'中的任何其他方法調用都將無法執行實例狀態的優點。 – 2013-04-03 22:09:47
@尼克弗里曼,是的,很明顯。我根據細節描述了兩個不同的方法,我們從這個問題中得到了什麼。 – 2013-04-03 22:12:04
這就是我正在尋找的。謝謝 – Chris 2013-04-03 22:31:04
聽起來很懷疑,但是你做你在說什麼,方法是將該方法static
public partial class MainWindow
{
public void MethodInMainWindow()
{
// Don't need to create a new instance of MyClass
MyClass.MethodInMyClass();
}
}
public class MyClass
{
public static void MethodInMyClass()
{
// ....
}
}
的代碼是錯誤的,在MethodInMyClass聲明中也需要static。我編輯它,但它被拒絕。不知道爲什麼。 – iltzortz 2013-04-03 22:02:33
@iltzotz是的,我糾正它。這是該職位最重要的部分。我不知道你的編輯爲什麼被拒絕。 – 2013-04-03 22:03:17
你在哪裏創建'MyClass'的實例? ?,你能顯示代碼嗎? – 2013-04-03 21:49:20
這也是我的懷疑。需要在MainWindow中公開我懷疑 – 2013-04-03 21:55:14