簡體   English   中英

如何從遙遠的類中調用未引用的方法? (允許使用C#和VB.NET)

[英]How do I call an unreferenced method from a distant class? (C# and VB.NET allowed)

對於我一生,我無法找到解決方案:我設置了一個類,該類可以執行多項操作,其中之一是操作窗口。 這些窗口之一是MainWindow.xaml

因此,例如,我希望此類關閉MainWindow.xaml ,即是否從OtherClass.cs調用一個方法。

基本上:我想從一個遙遠的類訪問窗口( MainWindow.xaml.cs )背后的代碼中的未引用方法,盡管在同一項目(Visual Studio)中。


當我使用MainWindow( using MainWindow或在 imports MainWindow )並使用其成員關閉窗口時,如下所示:

using MainWindow
Public class OtherClass
{
    // OtherClass is instanced elsewhere and then is decided to close MainWindow.
    // So I imagine doing the following:
    private void CommandClose()
    {
        CloseMainWindow();
    }
    ...
}

在MainWindow.xaml.cs中:

Public class MainWindow
{
    Public void CloseMainWindow()
    {
        this.close();
    }
    ...
}

雖然我收到以下錯誤: “引用非共享成員需要對象引用”。

意思是我應該做類似的事情:

using MainWindow
Public class OtherClass
{
    MainWindow myWindow // Though now I have a new window :/
    private void CommandClose()
    {
       myWindow.CloseMainWindow();
    }
    ...
}

因此,要訪問MainWindow.xaml.cs中的任何成員而不創建新實例,我是否需要共享它們? 但這將使它無法對窗口執行任何操作,因為那時close命令將不可用!

我可能忽略了一些東西,但是atm我似乎沒注意到。 有誰願意向我展示一種處理這種情況的方法?

注意:如果有人在想,我正在Windows Presentation Foundation中工作。


為了進一步闡明,這里是對描述我的情況的先前答案之一的評論:

我想做的是在另一個類中運行命令,該類是WPF窗口的公共成員。 該窗口已被實例化並顯示。 我只想訪問其公共成員,以便為方便起見可以從另一個類操縱該窗口。 我的這個OtherClass.cs是處理控制台操作的類。 控制台是位於MainWindow.xaml.cs中的自定義控件。 當用戶鍵入例如/ close時,我希望關閉MainWindow.xaml,但不僅限於此,因為將來我想添加更多功能。

您仍然需要一個對象引用。 而且您將必須使用應用程序上下文。

這是您獲取打開或關閉它們的任何類型的窗口的引用列表的方式:

    var windows = Application.Current.Windows.OfType<MainWindow>();
    foreach (var window in windows)
    {
        window.Close();
    }

您可以在它們上調用任何其他想要的方法,並且可以搜索任何其他類型的窗口,但這是您找到要查找的窗口的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM