Properties Window Fields and Interfaces
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
The model for selection to determine what information is displayed in the Properties window is based on the window that has focus in the IDE. Every window, and object within the selected window, can have its selection context object pushed to the global selection context. The environment updates the global selection context with values from a window frame when that window has the focus. When the focus changes, so does the selection context.
Tracking Selection in the IDE
The window frame or site, owned by the IDE, has a service called STrackSelection. The following steps show how a change in a selection, caused by the user either changing focus to another open window or selecting a different project item in Solution Explorer, is implemented to change the content displayed in the Properties window.
The object created by your VSPackage that is sited in the selected window calls QueryService to have STrackSelection invoke ITrackSelection.
The selection container, provided by the selected window, creates its own ISelectionContainer object. When the selection changes, the VSPackage calls OnSelectChange to notify any listeners in the environment, including the Properties window, of the change. It also provides access to hierarchy and item information related to the new selection.
Calling OnSelectChange and passing it the selected hierarchy items in the
VSHPROPID_BrowseObject
parameter populates the ISelectionContainer object.An object derived from the IDispatch Interface is returned for __VSHPROPID for the item requested, and the environment wraps it into an ISelectionContainer (see the following step). If the call fails, the environment makes a second call to
IVsHierarchy::GetProperty
, passing it the selection container __VSHPROPID that the hierarchy item or items supply.Your project VSPackage does not create ISelectionContainer because the environment-supplied window VSPackage that implements it (for example, Solution Explorer) constructs ISelectionContainer on its behalf.
The environment invokes the methods of ISelectionContainer to get the objects based on the
IDispatch
interface to fill in the Properties window.When a value in the Properties window is changed, VSPackages implement
IVsTrackSelectionEx::OnElementValueChangeEx
andIVsTrackSelectionEx::OnSelectionChangeEx
to report the change to the element value. The environment then invokes IVsUIShell or IConnectionPointContainer to keep the information displayed in the Properties window synchronized with the property values. For more information, see Updating Property Values in the Properties Window.In addition to selecting a different project item in Solution Explorer to display properties related to that item, you can also choose a different object from within a form or document window using the drop-down list available on the Properties window. For more information, see Properties Window Object List.
You can change the way information is displayed in the Properties window grid from alphabetical to categorical, and, if available, you can also open a property page for a selected object by clicking the appropriate buttons on the Properties window. For more information, see Properties Window Buttons and Property Pages.
Finally, the bottom of the Properties window also contains a description of the field selected in the Properties window grid. For more information, see Getting Field Descriptions from the Properties Window.