【发布时间】:2020-05-14 18:37:34
【问题描述】:
我需要在我的 WPF 应用程序中添加 FolderBrowserDialog。
我知道一种方法是添加到System.Windows.Forms.dll,但这种方法无法正常工作。
我的 XAML:
<Window x:Class="Sample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
WindowState="Normal"
ResizeMode="NoResize"
mc:Ignorable="d"
Title="MainWindow" Height="600" Width="600">
<Grid>
<TextBox Height="30" width="80" Name="TextBox1"/>
<Button Height="50" Width="50" Content="Browse" Click="btn_Click"/>
</Grid>
</Window>
我的代码隐藏:
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Sample
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btn_Click(object sender, RoutedEventArgs e)
{
FolderBrowserDialog folderDialog = new FolderBrowserDialog();
folderDialog.SelectedPath = "C:\\";
DialogResult result = folderDialog.ShowDialog();
if (result.ToString() == "OK")
textBox1.Text = folderDialog.SelectedPath;
}
}
}
我在依赖项中添加了System.Windows.Forms.dll。添加System.Windows.Forms.dll后,FolderBrowserDialog类工作正常,但InitializeComponent();报错:
InitializeComponent 在当前上下文中不存在
【问题讨论】:
-
您必须完全限定 Winforms 类型,例如
System.Windows.Forms.FolderBrowserDialog。重要提示:FolderBrowserDialog实现IDisposable。因此,当使用FolderBrowserDialog类型的局部变量时,请确保它在using块(或finally)中使用。如果使用FolderBrowserDialog类型的实例成员,那么也让周围的类型实现IDisposable。
标签: c# wpf wpf-controls