Table of content

Enhanced Listboxes

Member listboxes appear when you type an object name followed by -> or dot. A listbox contains a list of methods and variables available to an object. Private members appear in listboxes even when outside a class definition.

Completion listboxes, on the other hand, appear when you type the prefix of a symbol and press Ctrl+Space. The listbox contains symbols valid in the context that contain the characters you typed. Completion listboxes are available any time and contain more than just the methods and variables of a members listbox.

Enhanced Listboxes is similar to another feature of Visual Assist, Suggestion Lists, which appear automatically as you type. Enhanced Listboxes typically have numerous entries whereas Suggestion Lists have few. You can convert any Suggestion List to a Completion Listbox—one type of the two types of Enhanced Listboxes—by pressing Ctrl+Space.

Visual Assist versus Visual Studio

In all versions of Visual Studio, listboxes in Visual Assist provide more functionality for navigation and selection than the built-in listboxes. And, the advanced functionality is available irrespective of the origin of listbox content. When Visual Assist is responsible for listbox content, the content is often available faster, for more symbols, and with more accurate results than content from Visual Studio.

In Visual Studio 2017, built-in listboxes provide a filtering toolbar and Predictive IntelliSense, which filters listboxes based on context.

Enable Enhanced Listboxes

Enhanced Listboxes in C/C++ are enabled by default whereas they are not for C#. Make the listboxes appear in both C++ and C# via the options dialog for Visual Assist.

Colored Content

Configure Visual Assist to apply enhanced syntax coloring to entries in member and completion listboxes.

Shrink As You Type

Save space and find your place in enhanced listboxes more easily by configuring them to shrink when possible. Only entries beginning with your typed characters remain. Press backspace and a list grows.

Acronyms and Shorthand

Acronyms and Shorthand may be used to further shrink a list.

Acronyms are short and simple abbreviations for symbols. Type an acronym and Visual Assist intuits the symbol to which you refer.

Shorthand is another way to reference and expand symbols. Shorthand works when you know only bits and pieces of names; i.e., you know less than necessary to use acronyms.

Enable acronyms and shorthand in the options dialog.

Bold Non-Inherited Members

Bold non-inherited members in Enhanced Listboxes to determine the origins of methods.

Enable bold in the options dialog.

List Non-Inherited Entries First

Access non-inherited entries quickly by having them listed first.

Enable this feature in the options dialog.

This feature is often used in combination with bolding of non-inherited members and shrinking, and can be enabled or disabled dynamically from the filtering toolbar.

Filtering Toolbar

Hover over an enhanced listbox and a filtering toolbar appears. Press buttons to include only members of a given kind (methods, fields, properties, events, etc.) or visibility (public, protected, private). Hover over a button to identify its meaning.

Select multiple types using Shift+Click for a range and Ctrl+Click for separated selections.

Click a depressed button to undo filtering.

Only buttons relevant to the content of an enhanced listbox appear. For example, buttons to show events will appear for C# when events are valid in the current context; they will not appear for unmanaged C/C++.

Buttons in a members listbox, after pressing -> or dot, appear for all members of a class. The buttons do not disappear as you type. Pressing a button is ineffective if the listbox no longer contains entries of the selected type.

Keyboard access to the filtering toolbar is not available.

Accepting from a Listbox

You can configure which ways you want to accept entries from listboxes:

Tab and Enter are self-explanatory. If disabled, Tab/Enter will close a listbox and insert a Tab/Enter into the editor. You can still use the mouse to accept from a listbox.

Additional characters has meaning that varies with IDE and programming language:

Visual Studio 2012 and newer, C/C++

Specify additional characters that accept entries in the options dialog of Visual Studio. Add a space to the default list to make Visual Assist behave as it does in older IDEs.

Visual Studio 2010 and older, C/C++

Characters that accept entries are those not valid in a symbol, including comma, space, and left parenthesis.

Visual Studio, C#

Specify additional characters that accept entries in the options dialog for Visual Studio. Select the dedicated option if you want entries "committed by pressing the space bar".


Press Ctrl to make an enhanced listbox transparent.

Completion of #include

Visual Assist opens an enhanced listbox in C/C++ after typing #include and a double quote. Force open the listbox by pressing Ctrl+Space between double quotes.

Use the angle bracket form of the #include directive and Visual Assist shows appropriate system includes.

Appropriate list content appears when you select a directory and type slash.

Completion within Comments and Strings

Visual Assist can open a listbox of completions when typing inside comments and strings. You must force the listbox open with Ctrl+Space. Since symbols within comments and strings do not have context, completions are assembled from text strings within your file. Completions are unrelated to symbol definitions.

Inclusion of VA Snippets

VA Snippets can be included in completion listboxes.

Overwriting Text

Unless text to the right of the text caret is a separate and valid symbol, Visual Assist overwrites the text when selecting from a listbox.

Hence, selecting a method from a completion listbox overwrites an existing method.

You can change the default behavior, i.e., retain existing text, by editing the registry

Content in C/C++

In C/C++, populate enhanced listboxes with content from Visual Assist or from default Intellisense. Select the parsers that produce the most accurate listboxes for your solution.

The setting does not apply to other features of Visual Assist, i.e., other features always obtain information from parsers that are part of Visual Assist.

Listbox content after ::, whether or not the :: follows a class or namespace, is always obtained from default Intellisense.

In C#, enhanced listboxes are always populated with content from default Intellisense.

Registry Settings

Value Name Meaning
CompletionOverwriteBehavior Set behavior for overwriting text when accepting from a listbox
IncludeDirectiveCompletionLists Disable #include completion
SuppressListboxes Use standard IDE listboxes