What is New in ShellBrowser .NET?
Version 7.1
Improvements
-
The ShellListView now passes the FocusedItem rather than the first selected item to controls linked using a ShellControlConnector. Thus, when the user expands the selection, using Shift, an attached preview will display the last selected element, instead of keeping the first.
-
A new "SelectionChanged" event has been added for the ShellListView. It is triggered by a timer, and will therefore only be called once, after one or more items were selected or deselected. It can be used, if rather expensive operations need to take place after the selection has changed.
-
A new "BeforeShowContextMenu" event has been added to the ShellListView, FileList, and ShellTreeView. It passes the selected list items or tree nodes and offers the option to stop the menu from showing. It can also be used to modify an additional context menu that is set in the "ContextMenuStrip" property of the respective control. Specifically, it allows you to set the "Visible", "Checked" or "Enabled" properties of single menu items contained in the custom menu. Note, that it is not possible to modify the shell menu items provided by Windows.
-
Instead of using the “Filter” property, the ShellListView now also provides a “FilterRegularExpression” property, that you can use to set a “System.Text.RegularExpressions.Regex” object, if you need more options than the Filter provides. Note, that the new property is not available in the designer, so you need to set it in code.
-
The “ReadOnly” property of the FileList has been improved. If “true”, no actions affecting the file system, like deleting or renaming, can be executed. Instead, deleting an element only removes it from the list.
Bugfixes
-
When a ShellFilePreview was created at runtime, the "AutomaticRefresh" property was activated for a short time during the creation of the component, even if this was neither intended nor needed. This is now avoided, as it could lead to problems and freezes in individual cases.
-
The handling of PDF files using the “PDF-XChange” preview handler has been fixed in the ShellFilePreview. A problem, where selecting a node in the "Start" folder of the ShellTreeView has jumped to the wrong node, has been fixed.
-
The "NavigationFailed" event should now be called reliably. In prior versions, the event could have been missing, depending on the user action and configuration of the ShellListView.
-
The performance of selecting many files using Ctrl-A has been improved. Also, copying or moving a substantial amount of files to the Clipboard using "Ctrl-C" or “Ctrl-X” now works much faster. This affects the FileList and ShellListView.
-
The “OperationPerformed” event in the ShellListView and ShellTreeView is now called for elements pasted from Outlook (messages or attachments), too.
-
The ShellListView should now be refreshed correctly when dropping or pasting a message or an attachment from Outlook to a folder. This now works, even if the “AutomaticRefresh” property of the ShellListView is not set.
-
A problem that occurred with the runtime creation of a ShellTreeView instance has been fixed. In previous versions, the “SelectedPath” property was not applied correctly, if the “RootedAt” property was also modified in construction code.
04/24/2024
Version 7.0
- Setup: The component for managing the installation key has been renewed. Therefore, all customers need new installation keys for V7, which are available through our customer area.
- ShellControlConnector: You can now restrict folder access for all controls linked with a ShellControlConnector instance using the new "FolderChanging" event. The event is called before the path is changed for any of the controls linked with the ShellControlConnector instance and setting the "e.Cancel" parameter will abort the path change.
- ShellBrowser, ShellListView, ShellTreeView: Using the new “ReadOnly” property, the components now don’t allow the folder contents to be changed., i.e., no items can be added, removed or renamed. This affects keyboard commands, the context menu and Drag-and-Drop.
- ShellAddressBar: The new "ReadOnly" property now prevents entering a path in the edit view of the AddressBar.
- ShellListView: Introduced a new “LoadItem” event. It is called in Details and Tile View, when the subitems of an item have been loaded.
- ShellBrowser, ShellListView, ShellTreeView: Images assigned in a ContextMenuStrip are now displayed at runtime, when this menu is used as custom context menu that is being added to the shell’s item context menu. In prior versions, these images were missing.
- ShellListView, ShellTreeView: There is a new “ShellContextMenuCommand.GoUp”, that is reported in the BeforeShellCommand event when the user goes to the parent folder.
- FileList, ShellListView: The size of icons in within view "Tile" has been increased to conform with Windows Explorer.
- ShellListView: When the ShellListView cannot show a folder because it either doesn’t exist or access rights are missing, it will now call the new “NavigationFailed” event for custom actions to take in this case.
- ShellTreeView: Using the “CompactRoots” property, you can now control whether extra space will be added between root nodes or not.
Bugs
- ItemIDList, SearchEdit, ShellHistoryToolBar: Going to the parent folder when the ShellList displays search results via the ShellHistoryToolBar or by pressing Alt+Up or Backspace, now displays the search scope, where the current search has been started, not the Desktop folder.
- ShellHistoryToolBar: A painting issue of the parent directory button has been fixed.
- SearchEdit: The search could possibly return too many, seemingly unexpected results. This has been corrected.
- ShellAddressBar: An UnauthorizedAccessException that might have occurred when clicking into the AddressBar is now prevented.
- ShellListView: Files containing a "." in their filename were not renamed correctly when file extensions were hidden from the view as the suffix was misinterpreted as file extension. This has been corrected.
- ShellListView: The error message the ShellListView displays when trying to navigate to a non-existing folder has been corrected. Note, that the “ShowErrorMessages” property of the ShellListView needs to be set to true for the error message to be displayed.
- FileList: A bug, where a path separator might have been missing in the "File" parameter of the “SearchFileMatches” event, has been fixed.
09/04/2023
Version 6.4
Improvements
- Breaking compatibility changes: ShellBrowser.NET now can be used in projects targeting .NET Framework 4.8, .NET Core 3.1, .NET 6.0, and .NET 7.0.
- ShellListView: Using the new "ThumbnailMode" property, you can now control whether icons or thumbnails are displayed in the list. The default value "ThumnbailMode.Auto" works like in Windows Explorer: view types containing only a small icon present the file type icon; larger icon views will automatically switch to display thumbnails. Using the value "ThumbnailMode.PreferIcons" or "ThumbnailMode.PreferThumbnails" sets the respective preference.
- ShellTreeView: A "Filter" property is now provided, that can be used to filter file types that are displayed if the ShellTreeView is configured to show files.
- ShellTreeView: The "ShowLines" property can now be configured via the property grid. Note, that it will only take effect, if the "UseSystemStyles" property is not set.
- ShellTreeView: Like Windows Explorer, the ShellTree now adds all available OneDrive nodes (OneDrive for Business, OneDrive Personal) as root nodes.
- ShellTreeView: The Quick Access or Home node now filters zip files unless the ShellTree is configured to show files.
- FileList, ShellListView, ShellTreeView: The effect of the ongoing drop operation is now passed in the event arguments of the "BeforeShellDrop" event.
- ShellFilePreview: Shortcuts are now resolved, and the shortcut target is previewed, instead of not presenting anything.
- ShellAddressBar: Environment variables are now being resolved when inserted into the ShellAddressBar or ExplorerBrowser. So, paths like %APPDATA% will navigate to the correct folder, instead of showing a "Path not found" error.
- ThumbnailImage: Added support for the runtime creation without the need to call "EndInit".
Bugfixes
- ShellFilePreview: A “FileLoadException” that could have occurred when previewing Outlook MSG files is now prevented.
- ShellFilePreview: Microsoft Edge now previews PDF files correctly in 32-bit applications instead of throwing a “BadImageFormatException”.
- ExplorerBrowser: An issue, where ExplorerBrowser re-appeared partially dark after the execution of a standard file dialog in dark mode, has been fixed.
- ExplorerBrowser: A problem where the wrong view style was displayed after displaying checkboxes has been fixed.
02/06/2023
Version 6.3.1
Improvements
- ThumbnailImage: It is now possible to pass non-file-system paths to the "Path" property (e.g. "This PC\My Phone\SD-Card\Images\picture.jpg"). Also, an "ItemIdList" property has been added, which can be used interchangeably.
- ShellListView: Instead of always defaulting to "System", the “RenderMode” property of the ShellListView's BackgroundContextMenu can now be configured via property "BackgroundContextMenuRenderMode". Also, the size of icons in the background context menu have been fixed and the menu is now scaled correctly in per monitor dpi settings.
- ShellListView, FileList, ShellTreeView: The "ShowOptionChanged" event now provides the property that was changed as string in the passed event arguments. The signature of the event is now "EventHandler<PropertyChangedEventArgs>". Note, that this is a breaking change if you have implemented the event before.
- ShellChangeNotifier: Some Windows notifications are sent more than once. To avoid problems in notification handlers, double notifications of the following types are now filtered: NotificationEvents.NetShare, NotificationEvents.NetUnshare, NotificationEvents.DriveRemove, NotificationEvents.DriveAdd, NotificationEvents.MediaInsert, NotificationEvents.MediaRemove, NotificationEvents.FileDelete.
Bugfixes
- ShellAddressBar: The synchronization of the current folder in the ShellAddressBar has been fixed. It will again display the folder that was opened in a different control sharing the same ShellControlConnector.
- Setup: To avoid conflicts between the demo and the full version, the demo version now has an odd build number, smaller than the build number of the full version.
- ShellListView: The long delays that could be observed, when opening a folder containing SolidWorks files, have been fixed.
- General: AlphaFS support was removed for .NET Core versions.
- ShellTreeView: The Quick Access root node is not added automatically if Quick Access is hidden in Windows Explorer via the respective registry setting (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HubMode).
- ShellTreeView: When showing files in the ShellTree, the Desktop node contained two nodes for control panel. This has been corrected to show one node only.
- ShellTreeView: Changing the "ItemHeight" property via the property grid in Visual Studio Designer is not applied automatically when starting the project, because it is controlled by properties such as “Font” and “UseSystemFont”, and the OS that runs the application. Unfortunately, fixing this had some side effects, so the property now does not appear in the Property Grid anymore. If you want to change the value, you can do so in the Form's Load EventHandler, for example.
- ShellListView: New folders or files that are created by the user via the context menu, are now added to the ShellListView temporarily, even if they do not match the current filter settings (i.e. creating a folder in a list that does not show folders), so that the user can rename the new element. It will disappear if the new name does not meet the filter criteria.
- ExplorerBrowser: Filtering options have been corrected: zip files were handled like folders, and consequently hidden, if "ContentFilter.ShowFolders" was set to false. Now it depends on the "ContentFilter.FileSystemOnly" setting: if it is true, zip files are handled like files.
- ShellListView, ShellTreeView: It is now possible to remove file extensions when renaming file in the ShellListView or ShellTreeView. Former versions have automatically re-added the former extension.
- ShellListView, ThumbnailImage: The loading of thumbnails on an attached mobile phone has been fixed.
- PathEdit: Fixed an ArgumentException that might have occurred when displaying the File Open Dialog.
- ExplorerBrowser: A flickering issue in ExplorerBrowser has been fixed.
- ExplorerBrowser: The "View" property is now correctly applied from the setting you specified, even if the ExplorerBrowser component is not visible at program start. In prior versions, setting the view has been ignored before the handle of the ExplorerBrowser was available.
- ExplorerBrowser: The "Load" event is now called, as soon as the ExplorerBrowser has been created.
- ShellChangeNotifier: Instead of reporting it as a "NetShare" event, the notification handler now reports the unsharing of a folder correctly as "NotificationEvents.NetUnshare".
- ShellBrowser, ShellTreeView: A potential error in ShellBrowser.HasFileExtension is now prevented.
- SystemImageList: An unhandled ArgumentException in the context of icon retrieval is now prevented.
03/07/2022
Version 6.3
- ShellBrowser.NET now supports .NET Core 3.1 and .NET 5.0. The assemblies are delivered as NuGet packages and will be installed in a local NuGet repository. The usage is described here.
- Breaking change: In .NET Core 3.1 and .NET 5.0 the ContextMenu type is no longer available. ShellBrowser functions have been migrated to use a ContextMenuStrip instead.
- ExplorerBrowser: Using the new "FocusChanged" event, it is now possible to react when the focus changes between different panes of the ExplorerBrowser. Use the new "FocusedPane" property to find out which pane currently has the focus.
- ShellTreeView: Using the method overload "ShellTreeView.AddRoot(ItemIdList)", it is now possible to add a root node to the ShellTreeView giving the path as ItemIdList. This makes it possible to add root nodes that do not represent file system paths (such as a path on an attached mobile device).
- ShellBrowser: Calling the “ShellBrowser.GetThumbnail” method before the SystemImageList has been accessed might have caused an OutOfMemoryException. This has been fixed.
- ShellListView: Although setting the "NoFillOnStartup" property left the list empty at program startup, "AddItem" events were issued for the individual items. This has been fixed.
- ShellFilePreview: Instead of displaying the file icon, the component now displays a message if no preview is available.
- ShellFilePreview: Renaming “msg” files that are currently selected in the FilePreview now works as expected without a FileNotFoundException being thrown.
- Drag-and-Drop of Outlook attachments did not work correctly in 32 bit applications. This has been fixed.
- FileList: The search functionality in the FileList mistakenly excluded files and folders attributed as reparse points from the search result. This error has been fixed.
- Several small corrections and improvements.
05/18/2021
Version 6.2
New Features and Improvements
- General: The components now support high DPI per monitor scenarios.
Besides the project configuration as described here, your project needs to target the .NET Framework 4.8. Check the "JamExplorer" and "ExplorerBrowser" example projects that have the necessary per Monitor v2 settings.
- This required a full refactoring of the SystemImageList affecting the viewstyles and image lists of the ShellListView, FileList, DriveList and ShellTree.
- It is now possible to use custom icons or thumbnails in the ShellListView, FileList and ShellTreeView. Check the new "Customization" example project for details.
ShellListView, ShellTreeView
- Using the new "FileNameFormat" property you can control, whether the ShellListView or ShellTreeView displays file extensions or not. The default value is "Auto", which keeps the former behavior and uses the respective Windows Explorer setting.
- The new "CheckBoxMode" property was added. The values "CheckBoxMode.Off" and "CheckBoxMode.Synchronized" work exactly like the boolean "CheckBoxes" property. The additional "CheckBoxMode.Simple" allows to use CheckBoxes without attached ShellControlConnector. The check states of the elements are not applied automatically; neither to other controls, nor to parent or children of a checked element.
ShellListView
- The thumbnail view now supports overlay icons like the shortcut arrows.
ShellListView, FileList
- To avoid delays that might occur when folder thumbnails are retrieved, a new property "FastFolderThumbnails" was introduced. If set to true (default), folder thumbnails previewing the contents of the folder are only displayed, if they can be retrieved from the cache. Else, a plain folder icon is preferred.
ShellAddressBar
- The ShellAddressBar now has a property "UseSystemFont", that controls if the "IconTitleFont" will be applied automatically.
- Property "RootedAtFileSystemFolder" has been added that allows to set a file system path as root of the ShellAddressBar. It's also possible to set the root to a special folder via the "RootedAt" property. This implies a breaking type change in the "ShellBreadCrumbBar.RootedAt" property, which was changed from "ShellFolder" to "ItemIdList".
- The new "BeforePathChange" event has been introduced. It can be used to intercept path changes and cancel the navigation in process.
- A background color of the ShellAddressBar is now also applied to the visible editing component when typing a path. Also, the editing field is now highlighted by a border.
- The caption of a search folder as it appears in the ShellAddressBar has been fixed to show up the same way as in Windows Explorer.
ExplorerBrowser
- Calling the "SmartRefresh" method or changing a filter property now only triggers a smooth lightweight update of the ShellView, instead of reloading the ExplorerBrowser component.
ExplorerBrowser, ItemIDList, SearchEdit
- To retrieve the "search scope" of a search results view in either ShellListView or ExplorerBrowser, use the ItemIdList.GetPropertyDisplayValue using SHCOLUMNID.SearchFolder as property.
ShellChangeNotifier:
- While it is still possible to use the "Directories" property to register for change notifications in different places, there is now another option using the new methods "AddItemIdList" and "RemoveItemIdList". This allows to add locations that don't have a physical path.
Bugfixes
ShellTreeView
- The "Quick Access" node is now automatically updated correctly when an item is added or removed in Windows File Explorer.
- The ShellTree now registers all its root nodes for shell notifications individually. This fixes some problems concerning the automatic update of nodes due to changes in the file system.
- When confirmations of deletion are activated in Windows Explorer, a folder might have been removed from the ShellTree, even if the user deselected the deletion in the confirmation dialog. This is not happening anymore.
- Now zip archives are recognized using attributes instead of checking the extension. Consequently, if "FileSystemOnly" is set, this avoids the error, that a normal folder named "Folder.zip" is mistakenly removed from the view too.
ShellListView, ShellTreeView
- The "BeforeShellCommand" event was only called for rename operations if the renaming was started via the context menu or by pressing "F2". Now it is also called, when the label of an item or a node is put to edit-mode by using a mouse click.
ShellListView
- If an element from a search result is deleted, it is removed from the search result too.
- The "Paste" menu item of the background context menu is now correctly enabled if an Outlook attachment was copied to the clipboard.
- Setting either "ShowRecycleBin" or "ShowNethood" to false, caused huge delays when loading large folders. This has been fixed.
FileList, ShellListView
- The "MouseUp" event is now called.
ExplorerBrowser
- The context menu is now also displayed for the inline edit box that appears when elements are being renamed.
- The "View" property is now returning correct values even if the view has been changed via the command pane.
- Setting the “VisiblePanes” property to "Auto", the AddressBar will now be included too.
ExplorerBrowser, ShellAddressBar
- Using the new "AddressBar" property, you can now access the ShellAddressBar that is included in ExplorerBrowser. The property is runtime only, i.e. it's not possible to control properties of the ShellAddressBar at design time.
Breaking and noteworthy changes
- Method ShellControlConnector.GetHistoryEnumerable was removed. Use property ShellControlConnector.HistoryItems instead.
- Introduced "Jam.Shell.Core.ShellBrowserException". In the Debug ShellBrowser dlls, more errors and failed API calls are rethrown as ShellBrowserException.
- ItemIdList is not implementing IDisposible anymore.
- ShellListView, FileList: The "HeaderRightClick" event is now a standard EventHandler (with EventArgs parameter).
Obsolete functions that have been removed
- JamBaseShellListView.IsDropTarget --> use property ShellDragDrop instead.
- ShellBrowser.GetDefaultSortColumn
- The ShellBrowser properties FileExtensionHidden, ShellShowFavorites, ShellShowAllFolders, ShellShowLibraries, ShellExpandToCurrentFolder and ShellListView.ExtensionsHidden can now be found in class ExplorerSettings.
- FileList.InvokeContextMenuCommand --> use InvokeCommandOnSelected instead.
- Jam.Shell.FILE_ATTRIBUTES --> use System,IO.FileAttributes instead.
08/07/2020
Version 6.1
New features and improvements
- ShellAddressBar: There is a new component "ShellAddressBar". It resembles the address bar known from Windows Explorer, containing a section that splits the current path into "BreadCrumbs" and allows easy navigation in the file system. Additionally it optionally contains a history and a search edit box. These panes can be turned on or off using the "VisiblePanes" property.
- The new "HistoryToolBar" that is included in the "ShellAddressBar" can also be used standalone.
- In addition, ExplorerBrowser now uses the ShellAddressBar instead of a ShellComboBox.
- Examples: A further sample project in the style of a classic "commander" file manager with 2 columns has been added.
- ShellListView: Standard .NET Drag/Drop events are now called, even if the "ShellDragDrop" property is true. However, it is not yet possible to set the "Effect" parameter via the event arguments. This is only possible using the "CopyMode" property of the control.
- ShellBrowser: The "Desktop" node in the ShellTree now has a context menu too.
- ShellFilePreview: Depending on the PreviewHandler, it is now possible to view files that do not have a physical path (e.g. files on an attached mobile phone). This now typically works for pdf and text files, and images.
- ShellListView, FileList, and ShellTreeView: Implemented the "ItemChecked" event for the ShellListView and FileList and the "NodeChecked" event for the ShellTreeView. They indicate the checking or unchecking of an element. In contrast to the "CheckStateChanged" the event is not called when a checkstate is applied indirectly or automatically applied by ShellBrowser.
- ShellListView, FileList: Date/Time columns now display values without seconds.
- ShellFilePreview: When the preview is synchronized via ShellControlConnector, it is now loaded after a small delay. This avoids the unnecessary loading of files that are only selected very shortly and also loading the preview doesn't interfere with message handling, so that double-clicks are not disrupted and not recognized anymore.
Bugfixes
- PathEdit: The "Browse" button is working again.
- ShellListView: Drag-and-Drop of files from an attached mobile phone to a ShellList now works as expected in 32-bit applications.
- ShellListView: Breaking change: Removed the obsolete "Details" property.
- ShellListView: Folders are not affected by a set filter. In the last version, they were accidentally filtered too.
- ShellListView: Instead of remaining empty, the ShellList now displays the contents of a folder even if it is disabled.
- ShellListView: Fixed a problem that wrong or too small columns were displayed after browsing a folder on an attached mobile phone.
- ShellListView: The "New" menu item in the background context menu is now disabled in zip folders.
- ShellListView: Under certain circumstances, the automatic refresh of the ShellList stopped working after an edit operation was cancelled via code. This has been fixed.
- ShellListView: Fixed the issue that thumbnails might be empty for files that are copied to the directory that is currently displayed in the ShellList.
- ShellListView: Now handling exceptions that might have occurred if asynchronous tasks return to an already disposed or currently disposing control.
- ShellListView: Fixed a sorting problem when pasting files into a folder - instead of respecting the sort order, the files were alphabetically sorted between the subfolders in the same parent folder.
- ShellListView, ShellTreeView: It is now possible to temporarily hide custom context menu entries that are assigned to the "ContextMenuStrip" property of a ShellListView or ShellTreeView, by setting the "Visible" property of the menu items to "false" in the "Opening" event handler of the ContextMenuStrip. The setting was ignored in the last version.
- ShellTreeView: The "Favorites" folder in Windows 7 is filled again instead of appearing empty.
- ShellTreeView: When selecting a path, the ShellTree now fully expands all relevant nodes, instead of just inserting nodes for this path only. The problem that sometimes the destination node appeared twice in the ShellTree was fixed.
- ShellTreeView: If a node beneath "Quick Access" is selected, controls connected via the same ShellControlConnector instance will now display the link target of the selected node, instead of remaining in the Quick Access scope. The ShellTree keeps the selection in Quick Access if the "Expand to current folder" setting is false in Windows Explorer.
- ShellTreeView: The "NoFillOnStartup" property has been fixed to work with multiple roots. If set, the roots of the ShellTree will not automatically be expanded when the program starts. If this avoids automatically expanding a slow folder, this can improve performance.
- ShellTreeView: Fixed a flickering problem that was caused by the asynchronous loading of the network node when navigating to a network path while the network node was still collapsed.
- ExplorerBrowser: The "ThumbnailSize" property is now only applied if view mode is "Thumbnail".
- ExplorerBrowser: Execution of the "DefaultAction" (i.e. the action that takes place on double-click) can now again be intercepted in the "DefaultAction" event by setting "e.InvocationProcessed" to true.
- ExplorerBrowser: Fixed bug when trying to access items in "C:\Users\<user>\AppData\Local\Microsoft\Windows\History".
- ExplorerBrowser: Dropped support for CheckMode.Checkboxes as it is incompatible with Windows 10 Dark Mode (use CheckMode.AutoSelect instead).
- ExplorerBrowser: The "SelectionChanged" event is now fired only once, when a different element is selected.
- ShellSearchEdit: The text hint is now updated if the folder that defines the search scope is renamed.
- ShellFilePreview: The Excel PreviewHandler is now released correctly, if the previews of two or more Excel files are unloaded "at the same time" (i.e. at program end), instead of not being able to shut down the Excel process or eventually causing an error in Excel.
- Also, we tried resolving exceptions that appeared to occasionally occur when the preview component is disposed.
- Many minor improvements and fixes have been incorporated.
04/30/2019
Version 6.0
- Windows XP is not supported anymore. This allows us to rely on some APIs that were not yet available on XP.
- The "ShellBrowser.dll" has been split into a "ShellBrowser.dll" and "ShellBrowser.Core.dll". This change was necessary due to the WPF Edition of ShellBrowser. This is a breaking change. When upgrading projects you need to add a reference to "ShellBrowser.Core.dll" manually:
- In the project references select "Add Reference". In the "Reference Manager" select "Browse" and select "ShellBrowser.Core.dll" from the installation directory.
- The ShellBrowser.Core.dll contains all base-classes that are used by ShellBrowser components. It is also possible to use this new assembly standalone, e.g. in Console projects (see the new "CoreSample" project included).
- ShellBrowser.NET is now targeting .NET Framework 4.0.
- Visual Studio 2010 and higher required.
- "ShellBrowser Components .NET Edition" has been shortened to "ShellBrowser.NET Components".
- Also due to the WPF Edition, some major refactoring took place. We tried to be very careful and not to induce major compatibility issues. Please don't hesitate to contact us if you experience issues when updating to V6.0 despite our efforts.
- The ShellSystemList is now deprecated. We have removed all usages from sample projects.
- Please use the "ExplorerBrowser" control as replacement. We have also added a new sample project for ExplorerBrowser.
ShellSearchEdit:
- The new component ShellSearchEdit contains the search edit field of Windows Explorer. It supports a "ShellControlConnector" and can be connected to the ShellList or ExplorerBrowser to define the scope and present the result of the search. For ExplorerBrowser it can be activated in the "VisiblePanes" property.
ControlPanelTaskDialog:
- The new "ControlPanelTaskDialog" can be used to show specific control subelements. Examples on how to use it can be found in the "JamExplorer" example project.
- There is also a new SpecialFolder "ShellFolder.AllTasks" that can be assigned to a ShellList and displays the available tasks.
ShellChangeNotifier:
- The usage of "AutomaticRefresh" in the controls that support it has been optimized to avoid re-registering the watched paths on initialization.
- Bugfix: A NullReferenceException that might have occurred in "ShellNotifyRegister" is now prevented.
ShellComboBox:
- When using the new property "AutomaticRefresh" the control is automatically refreshed if a drive is added or removed.
- The problem that the control was updated several times initially has been fixed.
- The order of entries now matches the Windows version the ShellComboBox is running on.
- Visual enhancements: the item height is increased. The quality of icons in the drop-down-list is better.
- An "InvalidOperationException" occurring on Windows PE has been fixed.
DriveList:
- Paths that have been added to the DriveList via the "Add" method now remain in the list when a refresh takes place, e.g. by pressing F5.
- Items in the DriveList are resolved asynchronously to avoid delays for non-existing paths or non-reachable net-drives.
- Change notifications from the Shell are handled more accurately. If a CD is inserted into the cdrom drive, it appears automatically in the list.
- The DriveList now has a visual representation at design-time.
ShellListView:
- The columns of a ShellList in details-mode and tooltips are now filled asynchronously to avoid delays for non-reachable elements.
- The "BeforeInvokeCommandOnSelected" event is obsolete. Please use "BeforeShellCommand" instead.
- Like in Windows Explorer, when an item is renamed, only the filename (without extension) will be highlighted.
- Folders that can cause delays when being accessed (i.e. the network folder or the root of net-drives) are now filled asynchronously.
- Some issues concerning display and sorting of the "QuickAccess" special folder have been fixed.
- Bugfix: A custom background context menu is now displayed no matter if the "ShellContextMenu" property is true or false.
- Bugfix: A NullReferenceException when navigating to the windows history folder doesn't occur anymore.
- Bugfix: An application hang that might have occurred when using certain ActiveX controls (like e.g. Office Viewer) and ShellBrowser controls in the same project has been fixed.
FileList:
- The FileList now supports deleting files from multiple drives.
ExplorerBrowser:
- The "MouseDown" and "MouseUp" events are now available and working.
- The Drag-and-Drop events "DragEnter", "DragOver" and "Drop" are now available and can be used to modify the automatic shell drag-and-drop.
- Like in Windows Explorer, the different icon sizes and viewstates can now be adjusted using Ctrl and the mouse-wheel.
- The sort columns and sort direction can now be controlled by code using "ExplorerBrowser.Columns.SortBy" and "ExplorerBrowser.Columns.SortDirection".
- The grouping feature is now accessible by code. Use "ExplorerBrowser.GroupBy" and "ExplorerBrowser.GroupDirection" to group items.
- Using the new methods "ExplorerBrowser.Columns.AutoSize()" and "ExplorerBrowser.Columns.DefaultSize()" the columns of an ExplorerBrowser instance can be adjusted automatically.
- The property "ExplorerBrowser.ContentFilter.ShowHidden" now works as expected independently of the current Windows Explorer settings.
- A "NavigationPending" event has been added, that allows canceling the current navigation process.
- ExplorerBrowser now has a visual representation at design-time.
ShellTreeView:
- Some issues concerning display and sorting of the "QuickAccess" special folder have been fixed.
- The "BeforeInvokeCommandOnSelected" event is obsolete; please use "BeforeShellCommand" instead.
- The list of affected paths that is passed in the eventargs has been fixed.
- The handling of shell notifications has been improved.
- Bugfix: The flickering of the ShellTree that occurred with Windows 10/1709 has been fixed.
- Bugfix: There is no exception anymore when right clicking on the empty space between two root nodes.
- Bugfix: A custom filter that might be implemented using the "AddTreeNode" event is reapplied when the ShellTree is refreshed (e.g. by pressing F5).
- Bugfix: The ShellTree is now refreshed correctly if a CD in the CD-drive is added or removed.
PathEdit:
- The event "BeforeShowDialog" can be used to cancel or replace the default dialog that is displayed when the PathEdit's button is clicked.
- We also fixed layout issues concerning high-dpi and font resizing.
ShellFilePreview:
- Breaking change: The "IShellPreviewHandler.Load" method has a changed the signature:
- bool Load(ShellFilePreview p_Parent, string p_Path, ItemIdList p_AbsolutePidl)
- has been changed to
- bool Load(ICommonPreviewHandlerHost p_Parent, string p_Path, ItemIdList p_AbsolutePidl)
- You might have implemented the interface if you use custom preview handlers. See the JamExplorer example project for an example of usage.
- The state messages of the component can be customized using the three new properties "NoPreviewAvailableMessage", "PreviewNotPossibleMessage", and "SelectFileMessage".
- Bugfixes: Word previews are now positioned correctly - before they might have been "displaced". A possible NullReferenceException that might have occurred on showing a preview is now prevented.
ThumbnailImage:
- The performance especially when resizing the control has been improved.
- On Windows PE the component will show at least icons (thumbnails are not available there).
06/28/2018
Version 5.4
- ShellTreeView: Using the new "MultipleRoots" property, the ShellTreeView can now display more than one root. By default, it will display the same roots as Windows Explorer (including Quick Access on Windows 10). The roots can be modified programmatically. ShellTreeView.ClearRoots() will remove all existing root nodes, use ShellTreeView.AddRoot to add a new root node for a SpecialFolder or a file system path.
- ExplorerBrowser: Using the new "CheckMode" property the type of checkbox handling can now be configured: CheckMode.Checkboxes displays checkboxes, CheckMode.AutoSelect controls the selection via the checkboxes, CheckMode.None doesn't display any checkboxes. CheckMode.AutoSelect is equivalent to the former "AutoCheckSelect" property.
- ShellTreeView: Tree nodes are now loaded only when they come into view, flickering when loading the ShellTree is reduced. The performance of opening TreeNodes with many subnodes has been improved. The "ChangeDelay" is now working as expected. It allows setting a delay before the ShellTreeView will inform controls sharing the same ShellControlConnector of a folder change.
- The ShellControlConnector component can now be used to connect a FileList with e.g. a ShellFilePreview or a ThumbnailImage, so that the file selected in the FileList is automatically displayed in the connected control.
- FileList: Performance issues concerning the search have been resolved, sorting of the list has been improved. The performance when adding many files at once has been improved as well. The "FileListItem.FileCount", "FileListItem.FileSize", "FileList.TotalFileCount", and "FileList.TotalFileSize" are no longer working recursively. Therefore "FileListItem.FileCount" is obsolete.
- FileList: The "SelectedFiles" property now contains complete file paths instead of filenames only.
- ShellListView, FileList: The performance of thumbnail image retrieval from the system in the view state "Thumbnails" has been improved. The performance when sorting large lists and when restoring the selection after changing the view state has been improved.
- ShellListView, FileList ViewState.LargerIcons and ViewState.ExtraLargeIcons will now show 48x48 icons on Windows XP. Menu items in the "View" submenu of the background context menu have been renamed slightly to better fit all Windows versions.
- ShellListView, ShellTreeView: Using the new "ShellDragDrop" property it is now possible to turn off the automatic handling of drag-and-drop events in the ShellBrowser components. Disabling the property enables you to implement your own drag-and-drop handling.
- ShellComboBox: UNC paths will now be displayed as physical paths when edited (i.e. "\server\temp" will now switch back to "\server\temp" instead of "temp" when editing the contents of the ShellComboBox). Generally, the ShellComboBox now displays the whole path as soon as the path is edited. Thus the "ShowFullPath" property only influences the display when the path is not being edited. When leaving the ShellComboBox without confirming a newly typed path by pressing Enter, the ShellComboBox will now re-display the path that is currently active.
- PathEdit: The dialog displayed in "FolderMode" is now the file dialog known from Windows Vista and higher by default, but the simple directory box can still be reactivated. Although not part of the toolbox, the new "BrowseForFolder" dialog class can be used standalone in place of .NET's "FolderBrowserDialog".
- ShellTreeView - Bugfix: A potential InvalidCastException occurring that might have occurred during drag-and-drop operations has been fixed.
- FileList - Bugfix: The "SelectedFiles" property is now refreshed properly when the selection in the FileList changes.
- ShellListView - Bugfix: Creating new files via the background context menu now results in one single file, even if there is more than one ShellListView in the same project.
- ShellListView - Bugfix: After displaying a new shell column, the contents of custom columns weren't displayed for items that had not already been loaded. This has been fixed.
- ShellListView - Bugfix: Restoring the view settings that are tracked per special folder (i.e. displayed columns, column widths, and sort order) did not work properly for some special folders. This issue has been fixed.
- ShellListView - Bugfix: Setting a filter in the ShellListView cleared the contents of the "Favorites" folder. Now the entries are correctly handled as links instead of files and are displayed regardless of the set filter.
- Bugfix WPF: File previews are correctly unloaded at program end. A "TypeInitializationException" that might have occurred at program end if ShellBrowser components had not been displayed yet is now prevented.
- ShellComboBox - Bugfix: A possible ArgumentNullException occurring during initialization of the ShellComboBox is now prevented.
- The example projects are now using .NET framework version v4.0.
- The API documentation has been improved.
- A lot of internal refactoring, minor improvements, and fixes have been incorporated.
11/08/2016
Version 5.3
- ExplorerBrowser, ShellSystemList: It is now possible to programmatically control which columns will be displayed and to modify their properties.
- ShellListView, FileList, and DriveList: The content of the "Columns" property has been replaced by a proprietary class and interface. This facilitates column handling but might potentially be a breaking change for your project.
- ShellTreeView, ShellListView: Network nodes are now expanded asynchronously on Windows Vista and later versions.
- General: Shell operations are executed asynchronously. This only works if your project's .NET framework version is 4.0 or higher.
- Support for Visual Studio 2015 has been added.
- ShellSystemList: The ShellSystemList is now propagating file selection changes; connected ThumbnailImage or ShellFilePreview will be updated correctly.
- ShellFilePreview: Automatic updates of the preview on file modification or deletion can now be prevented by setting the new "AutomaticRefresh" property to false. Deleting a displayed PDF file will not raise an exception anymore (regardless of the "AutomaticRefresh" property).
- ExplorerBrowser: It is now possible to control the navigation pane using keyboard navigation.
- ShellListView, FileList - Bugfix: The "e.Files" parameter in the "OperationPerformed" and "BeforeShellDrop" events now holds all affected elements. Duplicate elements are no longer filtered out. For Outlook messages the filenames in "e.Files" are no longer truncated.
- ShellTreeView, ShellListView - Bugfix - A possible ArgumentOutOfRangeException occurring when renaming drives is now handled.
- ShellFilePreview - Bugfix: A painting problem concerning files displayed with the MS Word Preview Handler occurring under special circumstances has been fixed.
- ShellFilePreview - Bugfix: A "FileLoadException" occurring with a certain version of AutoDesk 360 has been fixed.
- ShellFilePreview - Bugfix: Problems that occasionally occurred when quickly switching between different PDF files displayed via the Adobe Acrobat PreviewHandler have been fixed.
- A lot of internal refactoring, minor improvements, and fixes have been incorporated.
10/26/2015
Version 7.0
- Setup: The component for managing the installation key has been renewed. Therefore, all customers need new installation keys for V7, which are available through our customer area.
- ShellControlConnector: You can now restrict folder access for all controls linked with a ShellControlConnector instance using the new "FolderChanging" event. The event is called before the path is changed for any of the controls linked with the ShellControlConnector instance and setting the "e.Cancel" parameter will abort the path change.
- ShellBrowser, ShellListView, ShellTreeView: Using the new “ReadOnly” property, the components now don’t allow the folder contents to be changed., i.e., no items can be added, removed or renamed. This affects keyboard commands, the context menu and Drag-and-Drop.
- ShellAddressBar: The new "ReadOnly" property now prevents entering a path in the edit view of the AddressBar.
- ShellListView: Introduced a new “LoadItem” event. It is called in Details and Tile View, when the subitems of an item have been loaded.
- ShellBrowser, ShellListView, ShellTreeView: Images assigned in a ContextMenuStrip are now displayed at runtime, when this menu is used as custom context menu that is being added to the shell’s item context menu. In prior versions, these images were missing.
- ShellListView, ShellTreeView: There is a new “ShellContextMenuCommand.GoUp”, that is reported in the BeforeShellCommand event when the user goes to the parent folder.
- FileList, ShellListView: The size of icons in within view "Tile" has been increased to conform with Windows Explorer.
- ShellListView: When the ShellListView cannot show a folder because it either doesn’t exist or access rights are missing, it will now call the new “NavigationFailed” event for custom actions to take in this case.
- ShellTreeView: Using the “CompactRoots” property, you can now control whether extra space will be added between root nodes or not.
Bugs
- ItemIDList, SearchEdit, ShellHistoryToolBar: Going to the parent folder when the ShellList displays search results via the ShellHistoryToolBar or by pressing Alt+Up or Backspace, now displays the search scope, where the current search has been started, not the Desktop folder.
- ShellHistoryToolBar: A painting issue of the parent directory button has been fixed.
- SearchEdit: The search could possibly return too many, seemingly unexpected results. This has been corrected.
- ShellAddressBar: An UnauthorizedAccessException that might have occurred when clicking into the AddressBar is now prevented.
- ShellListView: Files containing a "." in their filename were not renamed correctly when file extensions were hidden from the view as the suffix was misinterpreted as file extension. This has been corrected.
- ShellListView: The error message the ShellListView displays when trying to navigate to a non-existing folder has been corrected. Note, that the “ShowErrorMessages” property of the ShellListView needs to be set to true for the error message to be displayed.
- FileList: A bug, where a path separator might have been missing in the "File" parameter of the “SearchFileMatches” event, has been fixed.
4 September 2023
Version 6.4
Improvements
- Breaking compatibility changes: ShellBrowser.NET now can be used in projects targeting .NET Framework 4.8, .NET Core 3.1, .NET 6.0, and .NET 7.0.
- ShellListView: Using the new "ThumbnailMode" property, you can now control whether icons or thumbnails are displayed in the list. The default value "ThumnbailMode.Auto" works like in Windows Explorer: view types containing only a small icon present the file type icon; larger icon views will automatically switch to display thumbnails. Using the value "ThumbnailMode.PreferIcons" or "ThumbnailMode.PreferThumbnails" sets the respective preference.
- ShellTreeView: A "Filter" property is now provided, that can be used to filter file types that are displayed if the ShellTreeView is configured to show files.
- ShellTreeView: The "ShowLines" property can now be configured via the property grid. Note, that it will only take effect, if the "UseSystemStyles" property is not set.
- ShellTreeView: Like Windows Explorer, the ShellTree now adds all available OneDrive nodes (OneDrive for Business, OneDrive Personal) as root nodes.
- ShellTreeView: The Quick Access or Home node now filters zip files unless the ShellTree is configured to show files.
- FileList, ShellListView, ShellTreeView: The effect of the ongoing drop operation is now passed in the event arguments of the "BeforeShellDrop" event.
- ShellFilePreview: Shortcuts are now resolved, and the shortcut target is previewed, instead of not presenting anything.
- ShellAddressBar: Environment variables are now being resolved when inserted into the ShellAddressBar or ExplorerBrowser. So, paths like %APPDATA% will navigate to the correct folder, instead of showing a "Path not found" error.
- ThumbnailImage: Added support for the runtime creation without the need to call "EndInit".
Bugfixes
- ShellFilePreview: A “FileLoadException” that could have occurred when previewing Outlook MSG files is now prevented.
- ShellFilePreview: Microsoft Edge now previews PDF files correctly in 32-bit applications instead of throwing a “BadImageFormatException”.
- ExplorerBrowser: An issue, where ExplorerBrowser re-appeared partially dark after the execution of a standard file dialog in dark mode, has been fixed.
- ExplorerBrowser: A problem where the wrong view style was displayed after displaying checkboxes has been fixed.
6 February 2023
Version 6.3.1
Improvements
- ThumbnailImage: It is now possible to pass non-file-system paths to the "Path" property (e.g. "This PC\My Phone\SD-Card\Images\picture.jpg"). Also, an "ItemIdList" property has been added, which can be used interchangeably.
- ShellListView: Instead of always defaulting to "System", the “RenderMode” property of the ShellListView's BackgroundContextMenu can now be configured via property "BackgroundContextMenuRenderMode". Also, the size of icons in the background context menu have been fixed and the menu is now scaled correctly in per monitor dpi settings.
- ShellListView, FileList, ShellTreeView: The "ShowOptionChanged" event now provides the property that was changed as string in the passed event arguments. The signature of the event is now "EventHandler<PropertyChangedEventArgs>". Note, that this is a breaking change if you have implemented the event before.
- ShellChangeNotifier: Some Windows notifications are sent more than once. To avoid problems in notification handlers, double notifications of the following types are now filtered: NotificationEvents.NetShare, NotificationEvents.NetUnshare, NotificationEvents.DriveRemove, NotificationEvents.DriveAdd, NotificationEvents.MediaInsert, NotificationEvents.MediaRemove, NotificationEvents.FileDelete.
Bugfixes
- ShellAddressBar: The synchronization of the current folder in the ShellAddressBar has been fixed. It will again display the folder that was opened in a different control sharing the same ShellControlConnector.
- Setup: To avoid conflicts between the demo and the full version, the demo version now has an odd build number, smaller than the build number of the full version.
- ShellListView: The long delays that could be observed, when opening a folder containing SolidWorks files, have been fixed.
- General: AlphaFS support was removed for .NET Core versions.
- ShellTreeView: The Quick Access root node is not added automatically if Quick Access is hidden in Windows Explorer via the respective registry setting (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HubMode).
- ShellTreeView: When showing files in the ShellTree, the Desktop node contained two nodes for control panel. This has been corrected to show one node only.
- ShellTreeView: Changing the "ItemHeight" property via the property grid in Visual Studio Designer is not applied automatically when starting the project, because it is controlled by properties such as “Font” and “UseSystemFont”, and the OS that runs the application. Unfortunately, fixing this had some side effects, so the property now does not appear in the Property Grid anymore. If you want to change the value, you can do so in the Form's Load EventHandler, for example.
- ShellListView: New folders or files that are created by the user via the context menu, are now added to the ShellListView temporarily, even if they do not match the current filter settings (i.e. creating a folder in a list that does not show folders), so that the user can rename the new element. It will disappear if the new name does not meet the filter criteria.
- ExplorerBrowser: Filtering options have been corrected: zip files were handled like folders, and consequently hidden, if "ContentFilter.ShowFolders" was set to false. Now it depends on the "ContentFilter.FileSystemOnly" setting: if it is true, zip files are handled like files.
- ShellListView, ShellTreeView: It is now possible to remove file extensions when renaming file in the ShellListView or ShellTreeView. Former versions have automatically re-added the former extension.
- ShellListView, ThumbnailImage: The loading of thumbnails on an attached mobile phone has been fixed.
- PathEdit: Fixed an ArgumentException that might have occurred when displaying the File Open Dialog.
- ExplorerBrowser: A flickering issue in ExplorerBrowser has been fixed.
- ExplorerBrowser: The "View" property is now correctly applied from the setting you specified, even if the ExplorerBrowser component is not visible at program start. In prior versions, setting the view has been ignored before the handle of the ExplorerBrowser was available.
- ExplorerBrowser: The "Load" event is now called, as soon as the ExplorerBrowser has been created.
- ShellChangeNotifier: Instead of reporting it as a "NetShare" event, the notification handler now reports the unsharing of a folder correctly as "NotificationEvents.NetUnshare".
- ShellBrowser, ShellTreeView: A potential error in ShellBrowser.HasFileExtension is now prevented.
- SystemImageList: An unhandled ArgumentException in the context of icon retrieval is now prevented.
7 March 2022
Version 6.3
- ShellBrowser.NET now supports .NET Core 3.1 and .NET 5.0. The assemblies are delivered as NuGet packages and will be installed in a local NuGet repository. The usage is described here.
- Breaking change: In .NET Core 3.1 and .NET 5.0 the ContextMenu type is no longer available. ShellBrowser functions have been migrated to use a ContextMenuStrip instead.
- ExplorerBrowser: Using the new "FocusChanged" event, it is now possible to react when the focus changes between different panes of the ExplorerBrowser. Use the new "FocusedPane" property to find out which pane currently has the focus.
- ShellTreeView: Using the method overload "ShellTreeView.AddRoot(ItemIdList)", it is now possible to add a root node to the ShellTreeView giving the path as ItemIdList. This makes it possible to add root nodes that do not represent file system paths (such as a path on an attached mobile device).
- ShellBrowser: Calling the “ShellBrowser.GetThumbnail” method before the SystemImageList has been accessed might have caused an OutOfMemoryException. This has been fixed.
- ShellListView: Although setting the "NoFillOnStartup" property left the list empty at program startup, "AddItem" events were issued for the individual items. This has been fixed.
- ShellFilePreview: Instead of displaying the file icon, the component now displays a message if no preview is available.
- ShellFilePreview: Renaming “msg” files that are currently selected in the FilePreview now works as expected without a FileNotFoundException being thrown.
- Drag-and-Drop of Outlook attachments did not work correctly in 32 bit applications. This has been fixed.
- FileList: The search functionality in the FileList mistakenly excluded files and folders attributed as reparse points from the search result. This error has been fixed.
- Several small corrections and improvements.
18 May 2021
Version 6.2
New Features and Improvements
- General: The components now support high DPI per monitor scenarios.
Besides the project configuration as described here, your project needs to target the .NET Framework 4.8. Check the "JamExplorer" and "ExplorerBrowser" example projects that have the necessary per Monitor v2 settings. - This required a full refactoring of the SystemImageList affecting the viewstyles and image lists of the ShellListView, FileList, DriveList and ShellTree.
- It is now possible to use custom icons or thumbnails in the ShellListView, FileList and ShellTreeView. Check the new "Customization" example project for details.
ShellListView, ShellTreeView
- Using the new "FileNameFormat" property you can control, whether the ShellListView or ShellTreeView displays file extensions or not. The default value is "Auto", which keeps the former behavior and uses the respective Windows Explorer setting.
- The new "CheckBoxMode" property was added. The values "CheckBoxMode.Off" and "CheckBoxMode.Synchronized" work exactly like the boolean "CheckBoxes" property. The additional "CheckBoxMode.Simple" allows to use CheckBoxes without attached ShellControlConnector. The check states of the elements are not applied automatically; neither to other controls, nor to parent or children of a checked element.
ShellListView
- The thumbnail view now supports overlay icons like the shortcut arrows.
ShellListView, FileList
- To avoid delays that might occur when folder thumbnails are retrieved, a new property "FastFolderThumbnails" was introduced. If set to true (default), folder thumbnails previewing the contents of the folder are only displayed, if they can be retrieved from the cache. Else, a plain folder icon is preferred.
ShellAddressBar
- The ShellAddressBar now has a property "UseSystemFont", that controls if the "IconTitleFont" will be applied automatically.
- Property "RootedAtFileSystemFolder" has been added that allows to set a file system path as root of the ShellAddressBar. It's also possible to set the root to a special folder via the "RootedAt" property. This implies a breaking type change in the "ShellBreadCrumbBar.RootedAt" property, which was changed from "ShellFolder" to "ItemIdList".
- The new "BeforePathChange" event has been introduced. It can be used to intercept path changes and cancel the navigation in process.
- A background color of the ShellAddressBar is now also applied to the visible editing component when typing a path. Also, the editing field is now highlighted by a border.
- The caption of a search folder as it appears in the ShellAddressBar has been fixed to show up the same way as in Windows Explorer.
ExplorerBrowser
- Calling the "SmartRefresh" method or changing a filter property now only triggers a smooth lightweight update of the ShellView, instead of reloading the ExplorerBrowser component.
ExplorerBrowser, ItemIDList, SearchEdit
- To retrieve the "search scope" of a search results view in either ShellListView or ExplorerBrowser, use the ItemIdList.GetPropertyDisplayValue using SHCOLUMNID.SearchFolder as property.
ShellChangeNotifier:
- While it is still possible to use the "Directories" property to register for change notifications in different places, there is now another option using the new methods "AddItemIdList" and "RemoveItemIdList". This allows to add locations that don't have a physical path.
Bugfixes
ShellTreeView
- The "Quick Access" node is now automatically updated correctly when an item is added or removed in Windows File Explorer.
- The ShellTree now registers all its root nodes for shell notifications individually. This fixes some problems concerning the automatic update of nodes due to changes in the file system.
- When confirmations of deletion are activated in Windows Explorer, a folder might have been removed from the ShellTree, even if the user deselected the deletion in the confirmation dialog. This is not happening anymore.
- Now zip archives are recognized using attributes instead of checking the extension. Consequently, if "FileSystemOnly" is set, this avoids the error, that a normal folder named "Folder.zip" is mistakenly removed from the view too.
ShellListView, ShellTreeView
- The "BeforeShellCommand" event was only called for rename operations if the renaming was started via the context menu or by pressing "F2". Now it is also called, when the label of an item or a node is put to edit-mode by using a mouse click.
ShellListView
- If an element from a search result is deleted, it is removed from the search result too.
- The "Paste" menu item of the background context menu is now correctly enabled if an Outlook attachment was copied to the clipboard.
- Setting either "ShowRecycleBin" or "ShowNethood" to false, caused huge delays when loading large folders. This has been fixed.
FileList, ShellListView
- The "MouseUp" event is now called.
ExplorerBrowser
- The context menu is now also displayed for the inline edit box that appears when elements are being renamed.
- The "View" property is now returning correct values even if the view has been changed via the command pane.
- Setting the “VisiblePanes” property to "Auto", the AddressBar will now be included too.
ExplorerBrowser, ShellAddressBar
- Using the new "AddressBar" property, you can now access the ShellAddressBar that is included in ExplorerBrowser. The property is runtime only, i.e. it's not possible to control properties of the ShellAddressBar at design time.
Breaking and noteworthy changes
- Method ShellControlConnector.GetHistoryEnumerable was removed. Use property ShellControlConnector.HistoryItems instead.
- Introduced "Jam.Shell.Core.ShellBrowserException". In the Debug ShellBrowser dlls, more errors and failed API calls are rethrown as ShellBrowserException.
- ItemIdList is not implementing IDisposible anymore.
- ShellListView, FileList: The "HeaderRightClick" event is now a standard EventHandler (with EventArgs parameter).
Obsolete functions that have been removed
- JamBaseShellListView.IsDropTarget --> use property ShellDragDrop instead.
- ShellBrowser.GetDefaultSortColumn
- The ShellBrowser properties FileExtensionHidden, ShellShowFavorites, ShellShowAllFolders, ShellShowLibraries, ShellExpandToCurrentFolder and ShellListView.ExtensionsHidden can now be found in class ExplorerSettings.
- FileList.InvokeContextMenuCommand --> use InvokeCommandOnSelected instead.
- Jam.Shell.FILE_ATTRIBUTES --> use System,IO.FileAttributes instead.
7 August 2020
Version 6.1
New features and improvements
- ShellAddressBar: There is a new component "ShellAddressBar". It resembles the address bar known from Windows Explorer, containing a section that splits the current path into "BreadCrumbs" and allows easy navigation in the file system. Additionally it optionally contains a history and a search edit box. These panes can be turned on or off using the "VisiblePanes" property.
- The new "HistoryToolBar" that is included in the "ShellAddressBar" can also be used standalone.
- In addition, ExplorerBrowser now uses the ShellAddressBar instead of a ShellComboBox.
- Examples: A further sample project in the style of a classic "commander" file manager with 2 columns has been added.
- ShellListView: Standard .NET Drag/Drop events are now called, even if the "ShellDragDrop" property is true. However, it is not yet possible to set the "Effect" parameter via the event arguments. This is only possible using the "CopyMode" property of the control.
- ShellBrowser: The "Desktop" node in the ShellTree now has a context menu too.
- ShellFilePreview: Depending on the PreviewHandler, it is now possible to view files that do not have a physical path (e.g. files on an attached mobile phone). This now typically works for pdf and text files, and images.
- ShellListView, FileList, and ShellTreeView: Implemented the "ItemChecked" event for the ShellListView and FileList and the "NodeChecked" event for the ShellTreeView. They indicate the checking or unchecking of an element. In contrast to the "CheckStateChanged" the event is not called when a checkstate is applied indirectly or automatically applied by ShellBrowser.
- ShellListView, FileList: Date/Time columns now display values without seconds.
- ShellFilePreview: When the preview is synchronized via ShellControlConnector, it is now loaded after a small delay. This avoids the unnecessary loading of files that are only selected very shortly and also loading the preview doesn't interfere with message handling, so that double-clicks are not disrupted and not recognized anymore.
Bugfixes
- PathEdit: The "Browse" button is working again.
- ShellListView: Drag-and-Drop of files from an attached mobile phone to a ShellList now works as expected in 32-bit applications.
- ShellListView: Breaking change: Removed the obsolete "Details" property.
- ShellListView: Folders are not affected by a set filter. In the last version, they were accidentally filtered too.
- ShellListView: Instead of remaining empty, the ShellList now displays the contents of a folder even if it is disabled.
- ShellListView: Fixed a problem that wrong or too small columns were displayed after browsing a folder on an attached mobile phone.
- ShellListView: The "New" menu item in the background context menu is now disabled in zip folders.
- ShellListView: Under certain circumstances, the automatic refresh of the ShellList stopped working after an edit operation was cancelled via code. This has been fixed.
- ShellListView: Fixed the issue that thumbnails might be empty for files that are copied to the directory that is currently displayed in the ShellList.
- ShellListView: Now handling exceptions that might have occurred if asynchronous tasks return to an already disposed or currently disposing control.
- ShellListView: Fixed a sorting problem when pasting files into a folder - instead of respecting the sort order, the files were alphabetically sorted between the subfolders in the same parent folder.
- ShellListView, ShellTreeView: It is now possible to temporarily hide custom context menu entries that are assigned to the "ContextMenuStrip" property of a ShellListView or ShellTreeView, by setting the "Visible" property of the menu items to "false" in the "Opening" event handler of the ContextMenuStrip. The setting was ignored in the last version.
- ShellTreeView: The "Favorites" folder in Windows 7 is filled again instead of appearing empty.
- ShellTreeView: When selecting a path, the ShellTree now fully expands all relevant nodes, instead of just inserting nodes for this path only. The problem that sometimes the destination node appeared twice in the ShellTree was fixed.
- ShellTreeView: If a node beneath "Quick Access" is selected, controls connected via the same ShellControlConnector instance will now display the link target of the selected node, instead of remaining in the Quick Access scope. The ShellTree keeps the selection in Quick Access if the "Expand to current folder" setting is false in Windows Explorer.
- ShellTreeView: The "NoFillOnStartup" property has been fixed to work with multiple roots. If set, the roots of the ShellTree will not automatically be expanded when the program starts. If this avoids automatically expanding a slow folder, this can improve performance.
- ShellTreeView: Fixed a flickering problem that was caused by the asynchronous loading of the network node when navigating to a network path while the network node was still collapsed.
- ExplorerBrowser: The "ThumbnailSize" property is now only applied if view mode is "Thumbnail".
- ExplorerBrowser: Execution of the "DefaultAction" (i.e. the action that takes place on double-click) can now again be intercepted in the "DefaultAction" event by setting "e.InvocationProcessed" to true.
- ExplorerBrowser: Fixed bug when trying to access items in "C:\Users\<user>\AppData\Local\Microsoft\Windows\History".
- ExplorerBrowser: Dropped support for CheckMode.Checkboxes as it is incompatible with Windows 10 Dark Mode (use CheckMode.AutoSelect instead).
- ExplorerBrowser: The "SelectionChanged" event is now fired only once, when a different element is selected.
- ShellSearchEdit: The text hint is now updated if the folder that defines the search scope is renamed.
- ShellFilePreview: The Excel PreviewHandler is now released correctly, if the previews of two or more Excel files are unloaded "at the same time" (i.e. at program end), instead of not being able to shut down the Excel process or eventually causing an error in Excel.
- Also, we tried resolving exceptions that appeared to occasionally occur when the preview component is disposed.
- Many minor improvements and fixes have been incorporated.
30 April 2019
Version 6.0
- Windows XP is not supported anymore. This allows us to rely on some APIs that were not yet available on XP.
- The "ShellBrowser.dll" has been split into a "ShellBrowser.dll" and "ShellBrowser.Core.dll". This change was necessary due to the WPF Edition of ShellBrowser. This is a breaking change. When upgrading projects you need to add a reference to "ShellBrowser.Core.dll" manually:
- In the project references select "Add Reference". In the "Reference Manager" select "Browse" and select "ShellBrowser.Core.dll" from the installation directory.
- The ShellBrowser.Core.dll contains all base-classes that are used by ShellBrowser components. It is also possible to use this new assembly standalone, e.g. in Console projects (see the new "CoreSample" project included).
- ShellBrowser.NET is now targeting .NET Framework 4.0.
- Visual Studio 2010 and higher required.
- "ShellBrowser Components .NET Edition" has been shortened to "ShellBrowser.NET Components".
- Also due to the WPF Edition, some major refactoring took place. We tried to be very careful and not to induce major compatibility issues. Please don't hesitate to contact us if you experience issues when updating to V6.0 despite our efforts.
- The ShellSystemList is now deprecated. We have removed all usages from sample projects.
- Please use the "ExplorerBrowser" control as replacement. We have also added a new sample project for ExplorerBrowser.
ShellSearchEdit:
- The new component ShellSearchEdit contains the search edit field of Windows Explorer. It supports a "ShellControlConnector" and can be connected to the ShellList or ExplorerBrowser to define the scope and present the result of the search. For ExplorerBrowser it can be activated in the "VisiblePanes" property.
ControlPanelTaskDialog:
- The new "ControlPanelTaskDialog" can be used to show specific control subelements. Examples on how to use it can be found in the "JamExplorer" example project.
- There is also a new SpecialFolder "ShellFolder.AllTasks" that can be assigned to a ShellList and displays the available tasks.
ShellChangeNotifier:
- The usage of "AutomaticRefresh" in the controls that support it has been optimized to avoid re-registering the watched paths on initialization.
- Bugfix: A NullReferenceException that might have occurred in "ShellNotifyRegister" is now prevented.
ShellComboBox:
- When using the new property "AutomaticRefresh" the control is automatically refreshed if a drive is added or removed.
- The problem that the control was updated several times initially has been fixed.
- The order of entries now matches the Windows version the ShellComboBox is running on.
- Visual enhancements: the item height is increased. The quality of icons in the drop-down-list is better.
- An "InvalidOperationException" occurring on Windows PE has been fixed.
DriveList:
- Paths that have been added to the DriveList via the "Add" method now remain in the list when a refresh takes place, e.g. by pressing F5.
- Items in the DriveList are resolved asynchronously to avoid delays for non-existing paths or non-reachable net-drives.
- Change notifications from the Shell are handled more accurately. If a CD is inserted into the cdrom drive, it appears automatically in the list.
- The DriveList now has a visual representation at design-time.
ShellListView:
- The columns of a ShellList in details-mode and tooltips are now filled asynchronously to avoid delays for non-reachable elements.
- The "BeforeInvokeCommandOnSelected" event is obsolete. Please use "BeforeShellCommand" instead.
- Like in Windows Explorer, when an item is renamed, only the filename (without extension) will be highlighted.
- Folders that can cause delays when being accessed (i.e. the network folder or the root of net-drives) are now filled asynchronously.
- Some issues concerning display and sorting of the "QuickAccess" special folder have been fixed.
- Bugfix: A custom background context menu is now displayed no matter if the "ShellContextMenu" property is true or false.
- Bugfix: A NullReferenceException when navigating to the windows history folder doesn't occur anymore.
- Bugfix: An application hang that might have occurred when using certain ActiveX controls (like e.g. Office Viewer) and ShellBrowser controls in the same project has been fixed.
FileList:
- The FileList now supports deleting files from multiple drives.
ExplorerBrowser:
- The "MouseDown" and "MouseUp" events are now available and working.
- The Drag-and-Drop events "DragEnter", "DragOver" and "Drop" are now available and can be used to modify the automatic shell drag-and-drop.
- Like in Windows Explorer, the different icon sizes and viewstates can now be adjusted using Ctrl and the mouse-wheel.
- The sort columns and sort direction can now be controlled by code using "ExplorerBrowser.Columns.SortBy" and "ExplorerBrowser.Columns.SortDirection".
- The grouping feature is now accessible by code. Use "ExplorerBrowser.GroupBy" and "ExplorerBrowser.GroupDirection" to group items.
- Using the new methods "ExplorerBrowser.Columns.AutoSize()" and "ExplorerBrowser.Columns.DefaultSize()" the columns of an ExplorerBrowser instance can be adjusted automatically.
- The property "ExplorerBrowser.ContentFilter.ShowHidden" now works as expected independently of the current Windows Explorer settings.
- A "NavigationPending" event has been added, that allows canceling the current navigation process.
- ExplorerBrowser now has a visual representation at design-time.
ShellTreeView:
- Some issues concerning display and sorting of the "QuickAccess" special folder have been fixed.
- The "BeforeInvokeCommandOnSelected" event is obsolete; please use "BeforeShellCommand" instead.
- The list of affected paths that is passed in the eventargs has been fixed.
- The handling of shell notifications has been improved.
- Bugfix: The flickering of the ShellTree that occurred with Windows 10/1709 has been fixed.
- Bugfix: There is no exception anymore when right clicking on the empty space between two root nodes.
- Bugfix: A custom filter that might be implemented using the "AddTreeNode" event is reapplied when the ShellTree is refreshed (e.g. by pressing F5).
- Bugfix: The ShellTree is now refreshed correctly if a CD in the CD-drive is added or removed.
PathEdit:
- The event "BeforeShowDialog" can be used to cancel or replace the default dialog that is displayed when the PathEdit's button is clicked.
- We also fixed layout issues concerning high-dpi and font resizing.
ShellFilePreview:
- Breaking change: The "IShellPreviewHandler.Load" method has a changed the signature:
- bool Load(ShellFilePreview p_Parent, string p_Path, ItemIdList p_AbsolutePidl)
- has been changed to
- bool Load(ICommonPreviewHandlerHost p_Parent, string p_Path, ItemIdList p_AbsolutePidl)
- You might have implemented the interface if you use custom preview handlers. See the JamExplorer example project for an example of usage.
- The state messages of the component can be customized using the three new properties "NoPreviewAvailableMessage", "PreviewNotPossibleMessage", and "SelectFileMessage".
- Bugfixes: Word previews are now positioned correctly - before they might have been "displaced". A possible NullReferenceException that might have occurred on showing a preview is now prevented.
ThumbnailImage:
- The performance especially when resizing the control has been improved.
- On Windows PE the component will show at least icons (thumbnails are not available there).
28 June 2018
Version 5.4
- ShellTreeView: Using the new "MultipleRoots" property, the ShellTreeView can now display more than one root. By default, it will display the same roots as Windows Explorer (including Quick Access on Windows 10). The roots can be modified programmatically. ShellTreeView.ClearRoots() will remove all existing root nodes, use ShellTreeView.AddRoot to add a new root node for a SpecialFolder or a file system path.
- ExplorerBrowser: Using the new "CheckMode" property the type of checkbox handling can now be configured: CheckMode.Checkboxes displays checkboxes, CheckMode.AutoSelect controls the selection via the checkboxes, CheckMode.None doesn't display any checkboxes. CheckMode.AutoSelect is equivalent to the former "AutoCheckSelect" property.
- ShellTreeView: Tree nodes are now loaded only when they come into view, flickering when loading the ShellTree is reduced. The performance of opening TreeNodes with many subnodes has been improved. The "ChangeDelay" is now working as expected. It allows setting a delay before the ShellTreeView will inform controls sharing the same ShellControlConnector of a folder change.
- The ShellControlConnector component can now be used to connect a FileList with e.g. a ShellFilePreview or a ThumbnailImage, so that the file selected in the FileList is automatically displayed in the connected control.
- FileList: Performance issues concerning the search have been resolved, sorting of the list has been improved. The performance when adding many files at once has been improved as well. The "FileListItem.FileCount", "FileListItem.FileSize", "FileList.TotalFileCount", and "FileList.TotalFileSize" are no longer working recursively. Therefore "FileListItem.FileCount" is obsolete.
- FileList: The "SelectedFiles" property now contains complete file paths instead of filenames only.
- ShellListView, FileList: The performance of thumbnail image retrieval from the system in the view state "Thumbnails" has been improved. The performance when sorting large lists and when restoring the selection after changing the view state has been improved.
- ShellListView, FileList ViewState.LargerIcons and ViewState.ExtraLargeIcons will now show 48x48 icons on Windows XP. Menu items in the "View" submenu of the background context menu have been renamed slightly to better fit all Windows versions.
- ShellListView, ShellTreeView: Using the new "ShellDragDrop" property it is now possible to turn off the automatic handling of drag-and-drop events in the ShellBrowser components. Disabling the property enables you to implement your own drag-and-drop handling.
- ShellComboBox: UNC paths will now be displayed as physical paths when edited (i.e. "\\server\temp" will now switch back to "\\server\temp" instead of "temp" when editing the contents of the ShellComboBox). Generally, the ShellComboBox now displays the whole path as soon as the path is edited. Thus the "ShowFullPath" property only influences the display when the path is not being edited. When leaving the ShellComboBox without confirming a newly typed path by pressing Enter, the ShellComboBox will now re-display the path that is currently active.
- PathEdit: The dialog displayed in "FolderMode" is now the file dialog known from Windows Vista and higher by default, but the simple directory box can still be reactivated. Although not part of the toolbox, the new "BrowseForFolder" dialog class can be used standalone in place of .NET's "FolderBrowserDialog".
- ShellTreeView - Bugfix: A potential InvalidCastException occurring that might have occurred during drag-and-drop operations has been fixed.
- FileList - Bugfix: The "SelectedFiles" property is now refreshed properly when the selection in the FileList changes.
- ShellListView - Bugfix: Creating new files via the background context menu now results in one single file, even if there is more than one ShellListView in the same project.
- ShellListView - Bugfix: After displaying a new shell column, the contents of custom columns weren't displayed for items that had not already been loaded. This has been fixed.
- ShellListView - Bugfix: Restoring the view settings that are tracked per special folder (i.e. displayed columns, column widths, and sort order) did not work properly for some special folders. This issue has been fixed.
- ShellListView - Bugfix: Setting a filter in the ShellListView cleared the contents of the "Favorites" folder. Now the entries are correctly handled as links instead of files and are displayed regardless of the set filter.
- Bugfix WPF: File previews are correctly unloaded at program end. A "TypeInitializationException" that might have occurred at program end if ShellBrowser components had not been displayed yet is now prevented.
- ShellComboBox - Bugfix: A possible ArgumentNullException occurring during initialization of the ShellComboBox is now prevented.
- The example projects are now using .NET framework version v4.0.
- The API documentation has been improved.
- A lot of internal refactoring, minor improvements, and fixes have been incorporated.
8 November 2016
Version 5.3
- ExplorerBrowser, ShellSystemList: It is now possible to programmatically control which columns will be displayed and to modify their properties.
- ShellListView, FileList, and DriveList: The content of the "Columns" property has been replaced by a proprietary class and interface. This facilitates column handling but might potentially be a breaking change for your project.
- ShellTreeView, ShellListView: Network nodes are now expanded asynchronously on Windows Vista and later versions.
- General: Shell operations are executed asynchronously. This only works if your project's .NET framework version is 4.0 or higher.
- Support for Visual Studio 2015 has been added.
- ShellSystemList: The ShellSystemList is now propagating file selection changes; connected ThumbnailImage or ShellFilePreview will be updated correctly.
- ShellFilePreview: Automatic updates of the preview on file modification or deletion can now be prevented by setting the new "AutomaticRefresh" property to false. Deleting a displayed PDF file will not raise an exception anymore (regardless of the "AutomaticRefresh" property).
- ExplorerBrowser: It is now possible to control the navigation pane using keyboard navigation.
- ShellListView, FileList - Bugfix: The "e.Files" parameter in the "OperationPerformed" and "BeforeShellDrop" events now holds all affected elements. Duplicate elements are no longer filtered out. For Outlook messages the filenames in "e.Files" are no longer truncated.
- ShellTreeView, ShellListView - Bugfix - A possible ArgumentOutOfRangeException occurring when renaming drives is now handled.
- ShellFilePreview - Bugfix: A painting problem concerning files displayed with the MS Word Preview Handler occurring under special circumstances has been fixed.
- ShellFilePreview - Bugfix: A "FileLoadException" occurring with a certain version of AutoDesk 360 has been fixed.
- ShellFilePreview - Bugfix: Problems that occasionally occurred when quickly switching between different PDF files displayed via the Adobe Acrobat PreviewHandler have been fixed.
- A lot of internal refactoring, minor improvements, and fixes have been incorporated.
26 October 2015