c# - 当我想通过打开文件来启动 WPF 应用程序时,我该怎么做
问题描述
您好我正在编写一个简单的 WPF 来显示二进制文件内容。
所以我想在尝试打开文件时启动应用程序。
但我不知道从哪里开始。
如何以及在哪里获取要打开的文件的数据?
我尝试从
StartupEventArgs e
并从
Environment.GetCommandLineArgs();
bot 返回空字符串数组。
我已经可以处理文件并在运行时打开它们,但不知道如何在开始时打开它们。
有谁知道从哪里开始。
提前致谢
解决方案
当您在“文件”->“打开方式”对话框中选择 WPF 应用程序时,您将把它作为参数传递给您的应用程序。
因此,如果您要像这样设置App.xaml:
<Application x:Class="WpfApp1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp1"
StartupUri="MainWindow.xaml"
Startup="Application_Startup">
...
</Application>
您可以在App.xaml.cs中侦听启动事件:
private void Application_Startup(object sender, StartupEventArgs e)
{
foreach (var arg in e.Args)
{
MessageBox.Show(arg);
}
}
出于演示目的,我只是在消息框中输出所有参数,因为很难及时将调试器附加到进程。现在,如果我们使用该应用程序打开任何文件:
我们将看到:
所以文件路径将作为第一个参数传递给应用程序。从那里您可以随心所欲地使用它。
如果您将文件类型与您的应用程序相关联,您将通过双击该文件获得相同的行为。如果您的应用程序将使用像 Wix 这样的已安装程序进行安装,您可以选择将某些文件类型直接关联为安装的一部分。
推荐阅读
- ios - 如何在iOS中滑动离子滑动时禁用垂直滚动?
- spring-boot - 如何在 vert.x 中实现 Zipkin
- rust - 在 Rust 中指定 FFI 库的链接路径有哪些不同的方法?
- php - 在 InnoDB 中具有表锁的 MySQL/InnoDB 事务
- mysql - 验证 MySQL 选择查询已成功处理
- qt - 屏幕外渲染器中的 Qt3D 透明度
- linux - Linux Debian apt-get update ERROR / Atom 缺少 GPG 密钥
- android - 我可以在一个活动中多次使用同一个片段吗?
- angular - 错误:键入'{ firstName:字符串;姓氏:字符串;年龄:数字;...' 不能用作索引类型
- ios - 修改超级视图的框架时自动调整子视图的大小