在项目引用中添加System.Windows.Forms.dll后,可以同时使用 OpenFolderDialog 和 FolderBrowserDialog。 用于获取文件夹位置的代码:
private void btnOpen_Click(object sender, RoutedEventArgs e)
{
System.Windows.Forms.FolderBrowserDialog openFileDlg = new System.Windows.Forms.FolderBrowserDialog();
var result = openFileDlg.ShowDialog();
if (result.ToString() != string.Empty)
{
txtPath.Text = openFileDlg.SelectedPath;
}
root = txtPath.Text;
}
用于获取文件夹和子文件夹中的 txt 的代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
lt = new ObservableCollection<MyModel>();
string[] dicFileList = Directory.GetFiles(root, "*.txt", SearchOption.AllDirectories);
foreach (string element in dicFileList)
{
myModel = new MyModel();
//myModel.Name = System.IO.Path.GetFileName(element);
myModel.Name = System.IO.Path.GetFileNameWithoutExtension(element);
myModel.StatusForCheckBox = false;
lt.Add(myModel);
}
myList.ItemsSource = lt;
}
您可以创建一个字段 public bool StatusForCheckBox { get; set;} 以便 MyModel 标识是否被选中:
private void Save_Click(object sender, RoutedEventArgs e)
{
List<string> ltForSave = new List<string>();
foreach (MyModel obj in myList.ItemsSource)
{
if(obj.StatusForCheckBox==false)
{
ltForSave.Add(";" + obj.Name);
}else
{
ltForSave.Add(obj.Name);
}
}
//Save ltForSave as ini file.
}
使用列表框,如下所示:
<ListBox x:Name="myList" Width="400" Height="400" HorizontalAlignment="Right">
<ListBox.ItemTemplate>
<DataTemplate >
<CheckBox Content="{Binding Name}" IsChecked="{Binding StatusForCheckBox,Mode=TwoWay}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如果回复有帮助,请点击“接受答案”并点赞。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。