Visual Studio IDE

Announcement: Last fall, we migrated this forum to Visual Studio Developer Community to provide you one convenient and responsive system for all feedback. As the final step in the migration, this forum will be closed off completely on June 1st, 2019. We encourage you to visit Visual Studio Developer Community where you can now suggest new ideas, browse and vote on existing ideas, and engage with Visual Studio teams.

We’d like your suggestions and ideas to help us continuously improve future releases of Visual Studio, so we’ve partnered with UserVoice, a third-party service, to collect your feedback. Please do not send any novel or patentable ideas, copyrighted materials, samples or demos for which you do not want to grant a license to Microsoft.

This site is for feature suggestions; if you need to file a bug, you can visit our Developer Community website to get started.

Note: your use of the portal and your submission is subject to the UserVoice Terms of Service & Privacy Policy and license terms.

We look forward to hearing from you!
- The Visual Studio Team

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  • Hot ideas
  • Top ideas
  • New ideas
  • My feedback
  1. Can you add in Visual basic an instruction by which we can grab the COM port names AND the DEVICE names that are linked to the Com ports?

    With My.Computer.Ports.SerialPortNames we can grab the port names such as Com1, Com2, etc but it would be a blessing to get the names of the devices connected to the ports as well.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  2. I am using Windows 8 and Visual Studio 2008.

    x_boolean = Double.TryParse("$2", x_double) 'returns false and 0
    but
    x_double = CDbl("$2") 'returns 2.0

    that seems inconsistent to me!

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we havenÕt acted on it. Looking at the VS Ò15Ó plans, weÕre not going to take action on this item, so weÕre going to close it. If the suggestion is still relevant, please either take a look to see if thereÕs another suggestion thatÕs similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  3. New usage for Do: Do ... End Do

    A popular trick among VB programmers is:

    If True Then
    Dim myAutoVar1
    Dim myAutoVar2
    ' etc.
    ' ...
    ' All done, dispose of myAutoVar*
    End If

    This is done to have temporary variables for specific moments that are then immediately deallocated when each moment concludes.

    It works, but looks goofy. I'm proposing:

    Do
    Dim myAutoVar1
    Dim myAutoVar2
    ' etc.
    ' ...
    ' All done, dispose of myAutoVar*
    End Do

    The End Do would work about the same as Loop Until True. Indeed the added benefit is that Exit Do and Continue can still be legitimate, so that one could exit…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  4. Allow VB arrays with non zero lower bounds (as in VB6 and VBA)

    A modern language restricting arrays to have 0 lower bounds?

    By passing this limitation with .NET arrays (created with the Array.CreateInstance method) creates a A LOT of incompatibilities in mixed-language programming.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  5. Select block with return value.

    NumberName = Select Case i
    Case 1
    Select = "one"
    Case 2
    Select = "two"
    Case 3
    Select = "three"
    Case Else
    Select = "other"
    End Select
    'Advantages:
    ' - no redundancy
    ' - clear purpose
    ' - good reading
    ' - good maintaining
    ' - no need new VB keyword

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  6. Fully Support "Add Watch" and "Quick Watch" for With'ed references in VB.NET IDE

    On a "With"'ed (Constant, Variable, Property) reference in VB.NET, when you select "Add Watch" (via Context Menu) or "Quick Watch" (via "Debug" or Context Menu), it defaults to the reference without pre-pending the full object qualifier (which the Watch or Quick Watch Window won't recognize). I have to then manually edit it (optionally using Intellisense) inside the Watch / Quick Watch Window to add the full object qualifier.

    I can't imagine it'd be that much more cost, because it's already pre-pending the full object qualifier if I hover the reference and use the Intellisense Watch which then even has a…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.
    - The Visual Studio Team

  7. Allow Select Cases using arrays or anonymous objects

    I'd like to see Select Case do something like the following:

    Select Case {boolA, boolB}
    Case {True, False}
    DoSomethingWhenOnlyFirst()

    Case {False, True}
    DoSomethingWhenOnlySecond()

    Case {True, True}
    DoSomethingWhenBoth()

    Case Else
    DoSomethingWhenNeither()
    End Select

    Which would be easier to read than some nasty nested If blocks as follows:

    If boolA Then
    If boolB Then
    DoSomethingWhenBoth()
    Else
    DoSomethingWhenOnlyFirst()
    End If
    Else
    If boolB Then
    DoSomethingWhenOnlySecond()
    Else
    DoSomethingWhenNeither()
    End If
    End If

    This idea could also be extended for non-Boolean values, or for arrays longer than 2.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  8. If I select a keyword in the Immediate window, and then press F1, I'd like to see help on the keyword, not on the Immediate window.

    I know how the Immediate window works. So, when I select some word in it (keyword, method name, whatever...) and then press F1, I'd like to see help on what I've selected instead of help on using the Immediate window. It should be just like the code editor.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  9. allow math functions on enums

    VB allows some math and bitwise operators on enums. So why not also allow max, min? It's totally inconsistent.

    I agree that enums with the Flags attribute need bitwise operations, but equally those without need arithmetic, at least to compare them.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  10. A program for Calculator uses 1 button and a program for Data Levels Chance Programming to force starting by first branch

    I send Execution file of project includes the two programs.

    About Calculator Program: Start debug then click on Calculator button then input First Number like 3 then OK then input Second Number like 2 then OK then input Operation like + then OK then show result sure it will be 5
    This Program has 5 operations are: "+", "-", "*", "/" and "^",

    About Data Levels Chance Programming program: you must start by branch_id=1,after first branch records finish you must continue by a fixed pattern of branch_id(2 then 3 then 4 .........etc),Price&Quantity of product must <>0, branch_id=INT(branch_id).
    Best Regards
    Ahmed…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.
    - The Visual Studio Team

  11. Streamline Casting

    We have tryCast, DirectCast, CType with some differences.

    Would it not be simpler and more expressive to have a casting assignment

    dim a as Double
    dim b as Integer
    b <= a The assignment could work like tryCast but work for all types
    and return nothing on casting errors
    b <- a This one would throw an exception if the cast is invalid

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we havenÕt acted on it. Looking at the VS Ò15Ó plans, weÕre not going to take action on this item, so weÕre going to close it. If the suggestion is still relevant, please either take a look to see if thereÕs another suggestion thatÕs similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  12. Add "backreference" in nested With blocks

    In such a Code :
    With FrmTest
    With .TextBox1
    .Text = "abc"
    ..TextBox2.Text = "abc"
    End With
    End With

    The double-dots ".." would refer to the first With block

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  13. Cycles with return Value.

    Dim i As Integer
    Dim ret As Integer
    ret = For i = 1 To 100
    ............If i = 50 Then Exit For
    ............Console.WriteLine(i.ToString)
    ........Next

    Select Case ret
    ....Case -1
    ........CycleElse()
    ....Case 0
    ........CycleComplete()
    ....Case 1
    ........CycleExit()
    End Select

    'or

    Select Case For i = 100 To 1 ' no cycle executing!
    ........................If i = 50 Then Exit For
    ........................Console.WriteLine(i.ToString)
    ....................Next
    ....Case -1
    ........CycleElse()
    ....Case 0
    ........CycleComplete()
    ....Case 1
    ........CycleExit()
    End Select

    Select Case For Each i In New Integer() {45, 3, 987}
    ........................If i = 50 Then Exit For
    ........................Console.WriteLine(i.ToString)
    ....................Next
    ....Case -1
    ........CycleElse()
    ....Case 0
    ........CycleComplete()
    ....Case 1 …

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  14. Better support for marshalling Structs

    Marshaling structures in VB.Net can be a real PITA because in VB a Structure can never be a true null. Using Nothing simply resets the values.

    Take this scenario (One of many) You have a COM interface that you need to pass structures into and retrieve the same structures back in other methods.

    <StructLayout(LayoutKind.Sequential)>
    Friend Structure FooStruct
    Public fooValue1 As Int32
    Public fooValue2 As Int32
    End Structure

    <ComImport(), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("15619f75-8372-456e-b31c-bfa34e44eda7")>
    Friend Interface FooComInterface
    'Lots of other methods
    'then
    Sub FooCreate(item1 As Int32, item2 As Int32, <[In]> ByRef optExtraInfo As FooStruct)
    Function GetFooInfo() As FooStruct
    End Interface

    Now the Issue is…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  15. Unary assignment operator ~ for plug to assign a variable to that same variable

    Example:

    ~TextBox1.Enabled

    Instead of:

    TextBox1.Enabled = Not TextBox1.Enabled

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  16. Allow to catch interfaces

    Currently it is not possible to directly catch an exception that implements an interface only through its interface which binds the catching method closely to the exception implementation.

    It would be nice if such an exception could be caught like this (IMyException is the name of the interface the thrown exception implements):

    Try
    MethodThatMayThrowAnIMyException()
    Catch ex As IMyException
    MsgBox(ex.Foo)
    End Try

    Which would be compiled to something similair to the compilation of:

    Try
    MethodThatMayThrowAnIMyException()
    Catch ex As Exception When TypeOf ex Is IMyException
    Dim myEx As IMyException = CType(ex, IMyException)
    MsgBox(myEx.Foo)
    End Try

    Thank you and best regards
    Chris

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  17. New programming language on VB

    I make the deposite of a new patent over INPI-Brasil for a new programming language (code) with a script based on VB. Please let develope it. The script is "tvbscript", <T> is the abreviation of "Tera" the name of the language that is modeled by CIM (Common Information Model) schemma. This script was compiled by and it's owner is the org. Microsoft Incorp. over the DMTF CIM schemma.

    For more information contact me:

    teralanguage@outlook.com

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    closed  ·  1 comment  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  18. Allow multi-dot operators to references outer With members in embeded With...End With blocks to simplify referencings outer members

    Allow multi-dot operators to references outer With members in embeded With...End With blocks to simplify referencings outer members. Somethimes we are working with setting up a control, but then have to set several options in one of its members, but must make references to the outer member. If we allowed an extra dot to reference an outer member, we could use this to reference out to however many levels required. I had added this to a language I had developed, to include a "This" operator to reference the object of the current With block, and it was very well received…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →
  19. implement wiki-style links in "javadoc"-comments (VB.NET)

    Situation: I use frequently cross-references (<see>-tags) in documentation comments (alias "javadoc"-comments) but in my opinion they are too cluttered and it's too much work to do to convert a textual reference into a <see>-tag.

    Request: Please allow additionally to the syntax eg. "<see cref="System.Security.AccessControl.ReadData">ReadData</see>" a wiki-style notation of "[System.Security.AccessControl.ReadData]" with useful defaults for the display name, eg. unqualified names of types, unqualified names of enumeration-values, unqualified names of methods if they reside in the same or a base class, unqualified class name + "." + method name if the method resides in another class etc.)

    To enable natural language, any…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.

    - The Visual Studio Team

  20. In vb.net extend try cast to all types

    Extend try cast to all types. Depending on options narrowing casts like integer to short would return nothing depending on the value in the variable rather than producing an exception

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Languages - Visual Basic  ·  Flag idea as inappropriate…  ·  Admin →

    Thanks for taking the time to share this suggestion. This item has been around for a couple of versions of Visual Studio and we haven’t acted on it. Looking at the VS “15” plans, we’re not going to take action on this item, so we’re going to close it. If the suggestion is still relevant, please either take a look to see if there’s another suggestion that’s similar that you can vote on, or open a new suggestion.
    - The Visual Studio Team

Feedback and Knowledge Base