【问题标题】:C# wpf open serialized file with windowsC# wpf用windows打开序列化文件
【发布时间】:2020-07-29 21:19:24
【问题描述】:

我有一个自定义文件。序列化和反序列化正在工作 使用我的自定义函数时很好

  • 文件 > 保存
  • 文件 > 打开

当我直接在 Windows 资源管理器中打开我的文件时 并想用它没有反序列化的程序打开它。 如何处理“外部”的反序列化?

感谢您的帮助。

【问题讨论】:

  • 当您在 Windows 中执行“打开方式...”时,文件的路径将成为您的 Main 函数的参数。我猜你可以在这里得到一些想法:stackoverflow.com/questions/6088961/…(也检查链接的副本)。正确阅读 main 中给出的参数,并在您的程序中采取相应的行动(例如,直接调用您拥有的反序列化函数)由您决定

标签: c# wpf windows


【解决方案1】:

当使用您的应用从 Windows 资源管理器打开文件时,文件的绝对路径将作为第一个命令行参数传递。 对于 WPF,您可以处理 AppStartup 事件以拦截此类参数,以便稍后在 MainWindow 中打开。

// App.xaml.cs
public string FileToOpen;

public App()
{
    Startup += (sender, e) =>
    {
        if (e.Args.Length > 0)
            FileToOpen = e.Args[0];
    };
}
// MainWindow.xaml.cs
public MainWindow()
{
    var path = (Application.Current as App).FileToOpen;
    if (path != null)
    {
        // TODO: open the file when appropriate
    }
}

【讨论】:

  • 谢谢,效果很好。你知道如何找出应用程序是否已经打开吗?因为当它是并且我使用资源管理器打开一个文件时,我将获得我的应用程序的一个新实例。这有点烦人。
  • 是的,但这是另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2017-02-02
相关资源
最近更新 更多