.NET Core 上的 OpenFileDialog
OpenFileDialog on .NET Core
在 .NET Framework 上,您可以使用 System.Windows.Forms.OpenFileDialog 使用本机 Windows UI 打开文件,但这仅适用于 Windows。
.Net Core 或其他替代方案有 System.Windows.Forms.OpenFileDialog 实现?
.NET Core 本身不包含任何 UI 的 API。例如,https://docs.microsoft.com/en-us/dotnet/api/?view=netcore-2.0&term=File 不显示任何相关内容。这也是 .NET Core 开发者目前的立场:
https://github.com/dotnet/core/issues/374
有几个外部库可以在特定平台上运行:
如果您没有真正依赖 .NET Core 本身。 UWP(建立在 .NET Standard 之上,但不同于 .NET Core)也可能是一个选项。
自从 .NET Core 添加了 support for Windows desktop applications,面向 .NET Core 的 WPF 和 Windows Forms 应用程序可以使用 OpenFileDialog
和 SaveFileDialog
API 的方式与他们会在 .NET Framework 中做。
这些 API 已移植到位于 .NET Core 3 及更高版本之上的 Windows 特定桌面包。
有了新的闪亮的 .NET 5.0 Windows 使用 WPF 控件的应用程序,可以使用 Microsoft.Win32
库中的 OpenFileDialog()
方法。它与 Windows 表单版本不同,例如 - ShowDialog()
方法 returns bool?
而不是 DialogResult
.
这是示例 MyWpfView.xaml.cs 代码:
using Microsoft.Win32;
using System.Windows;
namespace TestProject {
public partial class MyWpfView
{
public MyWpfView()
{
InitializeComponent();
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
var fileDialog = new OpenFileDialog();
if (fileDialog.ShowDialog() == true)
{
FileTextBox.Text = fileDialog.FileName;
}
}
}
}
看来你可以使用
<UseWindowsForms>true</UseWindowsForms>
在项目文件中,如果此应用仍适用于 Windows 平台。
我写这个答案是因为我看到很多使用 Microsoft.Win32
的答案,这基本上是一样的,但是你没有用于向后兼容代码的垫片。
在 .NET Framework 上,您可以使用 System.Windows.Forms.OpenFileDialog 使用本机 Windows UI 打开文件,但这仅适用于 Windows。
.Net Core 或其他替代方案有 System.Windows.Forms.OpenFileDialog 实现?
.NET Core 本身不包含任何 UI 的 API。例如,https://docs.microsoft.com/en-us/dotnet/api/?view=netcore-2.0&term=File 不显示任何相关内容。这也是 .NET Core 开发者目前的立场: https://github.com/dotnet/core/issues/374
有几个外部库可以在特定平台上运行:
如果您没有真正依赖 .NET Core 本身。 UWP(建立在 .NET Standard 之上,但不同于 .NET Core)也可能是一个选项。
自从 .NET Core 添加了 support for Windows desktop applications,面向 .NET Core 的 WPF 和 Windows Forms 应用程序可以使用 OpenFileDialog
和 SaveFileDialog
API 的方式与他们会在 .NET Framework 中做。
这些 API 已移植到位于 .NET Core 3 及更高版本之上的 Windows 特定桌面包。
有了新的闪亮的 .NET 5.0 Windows 使用 WPF 控件的应用程序,可以使用 Microsoft.Win32
库中的 OpenFileDialog()
方法。它与 Windows 表单版本不同,例如 - ShowDialog()
方法 returns bool?
而不是 DialogResult
.
这是示例 MyWpfView.xaml.cs 代码:
using Microsoft.Win32;
using System.Windows;
namespace TestProject {
public partial class MyWpfView
{
public MyWpfView()
{
InitializeComponent();
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
var fileDialog = new OpenFileDialog();
if (fileDialog.ShowDialog() == true)
{
FileTextBox.Text = fileDialog.FileName;
}
}
}
}
看来你可以使用
<UseWindowsForms>true</UseWindowsForms>
在项目文件中,如果此应用仍适用于 Windows 平台。
我写这个答案是因为我看到很多使用 Microsoft.Win32
的答案,这基本上是一样的,但是你没有用于向后兼容代码的垫片。