| File: System\Windows\Forms\FileDialogCustomPlace.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms.Primitives\src\System.Windows.Forms.Primitives.csproj (System.Windows.Forms.Primitives) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Windows.Forms; /// <remarks> /// <para> /// Sample Guids /// </para> /// <list type="bullet"> /// <item><description>ComputerFolder: "0AC0837C-BBF8-452A-850D-79D08E667CA7"</description></item> /// <item><description>Favorites: "1777F761-68AD-4D8A-87BD-30B759FA33DD"</description></item> /// <item><description>Documents: "FDD39AD0-238F-46AF-ADB4-6C85480369C7"</description></item> /// <item><description>Profile: "5E6C858F-0E22-4760-9AFE-EA3317B67173"</description></item> /// </list> /// </remarks> public class FileDialogCustomPlace { private string _path = string.Empty; private Guid _knownFolderGuid = Guid.Empty; public FileDialogCustomPlace(string? path) { Path = path; } public FileDialogCustomPlace(Guid knownFolderGuid) { KnownFolderGuid = knownFolderGuid; } [AllowNull] public string Path { get => _path ?? string.Empty; set { _path = value ?? string.Empty; _knownFolderGuid = Guid.Empty; } } public Guid KnownFolderGuid { get => _knownFolderGuid; set { _path = string.Empty; _knownFolderGuid = value; } } public override string ToString() { return $"{base.ToString()} Path: {Path} KnownFolderGuid: {KnownFolderGuid}"; } internal unsafe IShellItem* GetNativePath() { string filePathString; if (!string.IsNullOrEmpty(_path)) { filePathString = _path; } else { fixed (char* path = filePathString) fixed (Guid* reference = &_knownFolderGuid) { int result = PInvoke.SHGetKnownFolderPath(reference, 0, HANDLE.Null, (PWSTR*)path); if (result == 0) { return null; } } } return PInvoke.SHCreateShellItem(filePathString); } }