首页 > 解决方案 > C#如何在另一个窗口中获取一个窗口的加载状态?

问题描述

我正在用 c# 在 wpf 中编写一个包含两个窗口的程序。一个命名MainWindow,另一个命名SubWindow

MainWindow 包含一个按钮和一个文本块。单击按钮时,将显示子窗口。

SubWindow 包含从磁盘上的图像和视频文件嵌入到其中的几个图像和视频 (MediaElement)。因此,当子窗口加载时,它也会从磁盘加载图像和视频。这需要一段时间。所以我希望用户知道当前在 SubWindow 中加载的图像和视频文件的文件名。我想通过在 MainWindow 的文本块中显示正在加载的文件名来实现这一点。总而言之,当单击 MainWindow 上的按钮时,会加载子窗口,并且 MainWindow 中的文本块会显示子窗口中当前正在加载的文件的文件名,并且一旦加载了所有文件,文本块就会显示消息“所有文件已成功加载”。我如何实现这一目标?

标签: c#.netwpfwindow

解决方案


您可以使用事件。

要注册一个新事件,请将以下代码放在您的子窗口顶部

        [Browsable(true)]
        [Category("Action")]
        public event EventHandler<string> MyFilesLoaded;

当您的代码加载文件时,会引发这样的事件。您可以根据需要多次提出事件。

  string f = "abc.doc,123.xls";
  EventHandler<string> handler = MyFilesLoaded;
  handler?.Invoke(null, f);

当然,您可以传递一个列表而不是字符串。

在您的主窗口注册事件:

public MainWindow()
{
    SubWindow.MyFilesLoaded+= DoSomething;
}

并在触发时处理事件:

private void DoSomething(object sender, string files)
{
     mynicetxt.Text = files;
}


推荐阅读