Skip Navigation LinksHome > SSW Standards > Better Software Suggestions > Visual Studio

Assistance for Access Developers Migrating Apps to .NET
  1. Improved Built-in Code Generation
  2. Automatically add referenced datasets a to a .NET Windows form
  3. Copy and paste form controls from Access and VB6 Forms to .NET Windows Forms
Microsoft Visual Studio Suggestions
  1. Set as Startup for Windows Forms
  2. Combo Control
  3. Automatic Code Auditing
  4. Gracefully change and delete datasets from the designer
  5. Back and Forward Buttons Should Look Like Internet Explorer
  6. Folder Delete Option
  7. .NET References List
  8. VSS - Make Integration with Visual Source Safe more Efficient
  9. VSS - Renames Should be Intelligent
  10. Visual Basic .NET to C# and Vice-Versa Language Converters
  11. Use Manifest Check Box
  12. Provide Feedback with Sound
  13. Notify of Invalid XML in the Task Pane
  14. "Load Last Loaded Solution" Bypass
  15. Tab Control ordering problem
  16. Need a Linker to make .exe's include required .NET components
  17. Shortcut for generating properties
  18. Designing forms after modifying code
  19. Need ticks and crosses on Reference Paths Page
  20. Need a DataBinding Smart Tasks shortcut
  21. Improve Data Source Configuration Wizard
  22. File Open dialog should have "Current Solution"
  23. Should be able to drag and drop a typed dataset onto the form designer
  24. Combo box with lookup button
  25. Modification of version numbers
  26. Load MRU (Most Recently Used) lists as a background process during Save or Delete
  27. Exclude <pre> tag when performing code auto-format
  28. Need a file association for Web.Config
  29. DataDude does not synchronise the Schema for Stored Procedures
  30. Compare two items of the same type
  31. DataDude needs a "select all"
  32. DataDude should explain the reason of droping constraints
  33. Inform the developer when adding referrence
  34. Need "Auto increment the build number on each Compile" check box
  35. Add Shortcut Key to format HTML
  36. Full 64 bit support
Microsoft Windows .NET Suggestions
  1. Neat format when copying Tables and Views (developers) and .NET Data Grids (end users)
  2. Right-Click/Filter-By Control for Tables and Views (developers) and .NET Data Grids (end users)
  3. Make .NET TreeView Tri-State
  4. Invoking an OLE DB Data Link Properties Dialog Box
  5. Make Separate Event Handlers for ToolBar Buttons
  6. Dirty Provider control
  7. Make Extender Provider Properties More Visible
  8. Sub forms
  9. Hiding properties in inherited forms
  10. Would like a Bread crumb control for windows forms
  11. ListView shouldn't change the checkbox's checkstate on double click
  12. Need the ability to trim characters from a string that does not completely fit into a ListView column
  13. Make ComboBox control sortable
  14. Ctrl+A to select all text for TextBox
  15. A top CheckBox to "select all" in windows forms
  16. Adding an error provider on a tab header
Microsoft Windows .NET 2.0 Suggestions
  1. Transparent images don't get rendered correctly
Microsoft ASP.NET Suggestions
  1. Catch broken redirect statements
  2. V2.0: No Tab Control in ASP.NET
  3. V2.0: No sort order indicator in GridView
  4. V2.0: TreeView Node Editor dialog needs to be resizable
  5. V2.0: PlaceHolders should be able to be resized
  6. V2.0: Wizard control default buttons text should be Back and Next
  7. BLINQ does not work with Timestamp
  8. Date/Time Picker Control
  9. Update Schema to Include Intrinsic Client-Side Events for ASP.NET Controls
  10. A top CheckBox to "select all" in web forms
Creating Visual Studio Add-in with EnvDTE Suggestions
  1. Hard to debug No error message
  2. Hard to debug Unhelpful or useless error messages
  3. EnvDTE is not completely implemented?
  4. Confusion for developers DTE.DTE.DTE?
  5. Confusion for developers EnvDTE._DTE and EnvDTE.DTE
Creating Add-In for Visual Studio 2005 Beta 2 Suggestions
  1. AccessViolationException
  2. Throws COMException randomly
FxCop
  1. FxCop report should contain more information

Assistance for Access Developers Migrating Apps to .NET

  1. Improved Built-in Code Generation

    We need a built-in code generator that can create a series of DataAdapters and strongly-typed DataSets based on the database schema. All the developer should have to do is select the database. Visual Studio .NET 2003 will create DataSets but not DataAdapters. Visual Studio 2005 is able to also create DataAdapters, but each table has to be dragged onto the DataSet manually. We prefer to have only one DataTable per file, but Visual Studio 2005 cannot do this automatically.

    Visual Studio 2005 DataSet Designer
    Figure: Visual Studio 2005 generates DataAdapters and DataTables if tables are dragged on manually, but all DataTables are stored in the one file

    DataSets in the Solution Explorer
    Figure: One DataSet per file

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    This has not been fixed in Visual Studio 2005 Beta 2.

  2. Automatically add referenced datasets a to a .NET Windows form

    When dragging a referenced dataset onto the form, we would like a checkbox that will create instances of all of the datasets in the DataSets project on the form. The current method of dragging a dataset on 5 times for a 5 tables (aka DataSets) for a form that uses multiple tables is tedious.

    DataSets AutoGenerate
    Figure - there should be a checkbox in this dialog which generates instances for all datasets found

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    This has not been fixed in Visual Studio 2005 Beta 2.


  3. Copy and paste form controls from Access and VB6 Forms to .NET Windows Forms

    It would be very useful to be able to Select All -> Copy from an Access or Visual Basic 6 Form and Edit -> Paste onto a blank form in Visual Studio .NET. The code behind does not need to be able to be converted with copy and paste, but the UI elements should be.

    Copy Paste from Access Forms
    Figure - We should be able to copy from here in Access...

    Copy Paste from Access Forms
    Figure - and paste to here in .NET

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    This has not been fixed in Visual Studio 2005 Beta 2.


Microsoft Visual Studio Suggestions

  1. Set as Startup for Windows Forms

    In .NET Windows Forms, there should be an option Set as Startup Form to be consistent with Web forms.


    Figure: Please add 'Set as Start Form' option

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    This has not been fixed in Visual Studio 2005 Beta 2.


  2. Startup Object Property

    The combo box control in this property grid needs to be more visible. Sometimes it is visible, sometimes not.


    Figure: Now you see the combo...


    Figure: Now you don't!

    The property is also inconsistent between C# and VB.NET. C# only lists classes which have a Main method. VB.NET lists all forms as well as classes with a main method. This is because VB.NET does not create a Main method if the Startup object is set to a Form. Instead:

    • VB.NET should always create a Main method for consistency with C#.
    • All Forms should be listed in both languages. If a Main method does not exist and a Form without one is selected, the Main method should be created.

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    This has not been fixed in Visual Studio 2005 Beta 2.


  3. Automatic Code Auditing

    Certain coding practices should be able to be banned. e.g. empty catch blocks, variables which do not follow naming conventions, etc. We have fixed this ourselves with a combination of Code Auditor and Microsoft's FxCop tool, which allows you to create custom rules.

    Update: Visual Studio .NET 2005 Beta 2 - Fixed
    FxCop is now integrated into Visual Studio .NET, and with Team Foundation Server, you can run rules over source code before allowing pending checkins.


  4. Gracefully change and delete datasets from the designer

    Have you ever deleted a dataset from the designer only to lose all your control bindings? We think a less frustrating and more useful solution is to:
    • If you delete a dataset, a window pops up list all the controls that are bound to this dataset. In this window you can choose to re-map the controls to an existing or new dataset.
    • There should be an option to change the source of a dataset, e.g. if you have a data set in the designer bound to "DataSets.Categories" and you want to change it to bind it to "DataSets.SubCategories" without losing your form bindings.


    Figure: If I delete any dataset here I lose all my form designer bindings. A confirmation dialog should pop up letting me know all controls that are bound to this dataset and allow me to change the dataset the controls are bound to or cancel the operation
  5. Back and Forward Buttons Should Look Like Internet Explorer

  6. The Backwards and Forwards buttons to move between different code locations and files in Visual Studio .NET are are hard to discover, because the icons do not resemble those in Internet Explorer.


    Figure: Did you know what these buttons were for?

    Update: Visual Studio .NET 2005 Beta 2 - Fixed
    The icons in Visual Studio .NET 2005 are an improvement on Visual Studio .NET 2003, but still not quite as obvious as we would like.


    Figure: The new icons are better, but still not like Internet Explorer.


  7. Folder Delete Option

    As shown in the screenshot, Visual Studio allows you to quickly and easily remove a project from a solution, via the popup menu in Solution Explorer. It would be good if there was also a command for removing the project file itself. This would save the user having to close VS, remove the project manually then re-open VS, which is what normally has to be done. And while we're on this topic, a command like 'Open in Explorer' could also make manipulating files in a project more convenient.

    Visual studio
    Figure: Right-clicking on a project in Solution Explorer.

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    This has not been fixed in Visual Studio 2005 Beta 2, but Microsoft have acknowledged it for a future release. Microsoft pointed out that it would be relatively easy to write an add-in to achieve this functionality. However, we would have liked a command where you could at least open the folder in Windows Explorer.

    See http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=570c1c41-c321-4323-86c2-b7aecdec287c for more information.


  8. .NET References List

    The list box on the .NET tab of the Add Reference dialog in Visual Studio (Project > Add Reference...) lists all available .NET components. (See screenshot below.) As .NET components are added to the system over time, this list box may end up containing thousands of items

    This is a bad idea for two reasons:
    1. It is difficult for users to find what they're looking for.
    2. The list takes a long time to load; the user may be forced to wait for as long as 30 seconds before being able to interact with the dialog box.

    A better idea may be to add a filter text box. Then the list can be filtered according to the characters entered into the text box, and updated each time the filter text changes.

    Add reference
    Figure: Add Reference dialog box in Visual Studio.

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    Visual Studio 2005 Beta 2 has a new Add Reference dialog box, but it is just as slow, and if anything, makes it harder to reference multiple items simultaneously. However, the Browse and Recent tabs are an improvement. Microsoft have acknowledged this for a future release. See http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=1d7e9daa-6a39-400a-8540-3b204218e084 for more information.


    Figure: New References Dialog in Visual Studio 2005 Beta 2

  9. VSS - Make Integration with Visual Source Safe More Efficient

    • A source safe project should be opened through "File/Open/Project from Source Safe"
    • A VS project should be able to be shared by sending the URL or fileshare which can be pasted into Start/Run (e.g. vss://Path/To/Database/ProjectName) - which would then be automatically checked out of Source Safe

    Update: Visual Studio .NET 2005 and Visual SourceSafe 2005 Beta 2 - Partially done
    Visual Studio .NET 2005 has an option under the Open submenu to open a Team Foundation Server project, but not a SourceSafe project. Microsoft have decided to keep the SourceSafe option under the Source Control menu so that all source control options remain grouped together.


    Figure: Visual Studio .NET 2005 Open Menu for Team Foundation Server

    Our suggestion of adding a protocol handler has been acknowledged by the SourceSafe team. See http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=ad63b542-aa4e-4081-927a-1cf65fd8921bb for more information. 

  10. VSS - Renames should be intelligent

    • Why doesn't renames work the same as Windows Explorer? The history shouldn't be lost when you rename an object and it shouldn't make a copy. A rename is a rename.
    • When you create a file, it also creates a class of the same name. Therefore if I rename the file, I want to class to be automatically renamed
    • When a button which has only one event in the handle statement is renamed, the function name should be automatically renamed

    Update: Visual Studio .NET 2005 and Visual SourceSafe 2005 Beta 2 - Partially done
    Visual SourceSafe 2005 Beta 2 will now support rename/delete/move propagation from the Solution Explorer to its database. This functionality is implemented in Visual Studios Source Code Control Integration layer, which means that any third-party SCM should be able to implement this as well.

    Visual Studio 2005 supports renaming the underlying class when the file name changes. Resharper can rename a file if you rename a class, allowing you to have this functionality today in Visual Studio .NET 2003.

    Event handler renaming is not present in Visual Studio .NET 2005, but the suggestion has been acknowledged. See http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=0d1f0c38-d537-4f90-823b-7b3a69f8d082 for more information.

  11. Visual Basic .NET to C# and Vice-Versa Language Converters

    There needs to be an automatic and reliable way to transfer code between C# and Visual Basic .NET languages. This would be particularly useful in an environment where both languages are used, and some developers are more familiar in one language, but need to know the correct way to exactly reproduce a set piece of code in the other language. There are several web-based tools available, but they can only convert about 80% of code. The functionality needs to be implemented in the compiler and MSIL so that all language elements are converted with 100% accuracy.

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    Visual Studio .NET 2005 does not have this feature. Microsoft believe that the total percentage of Visual Studio users who would use this would probably be fairly low, not enough to justify adding the feature to Visual Studio.


  12. Use Manifest Check Box

    The Properties of a Project should have a "Use Manifest" check box rather than having to copy files into directories.

    Update: Visual Studio .NET 2005 Beta 2 - Done
    Visual Studio .NET 2003 added a feature where you could call Application.EnableVisualStyles() to use themes in your application, however it did not work correctly.Visual Studio 2005 fixes this bug, and there is now a checkbox where you can enable or disable themes.


    Figure: Enable XP visual styles check box in the project properties in Visual Studio 2005 Beta 2


  13. Provide Feedback with Sound

    Both Word and Outlook have this fantastic option for those developers who like to receive information aurally (yes this is correct spelling and means "through listening") as well as visually.

    Feedback with sound
    Figure: Provide Feedback with Sound option in Office

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    Visual Studio .NET 2005 does not provide aural feedback, but Microsoft have acknowledged our suggestion for a future version. See http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=20df7730-42c8-4e74-9f32-111aec4ab495 for more information.


  14. Notify of Invalid XML in the Task Pane

    Making the Task Pane notify the user that their XML schema (e.g. in App.config) is invalid would save many users a lot of time. Because while you have this error you can't copy and paste and it therefore takes you forever to find the problem.

    Invalid XML to show up in task pane
    Figure: The Task Pane should notify users if their XML is invalid

    Update: Visual Studio .NET 2005 Beta 2 - Fixed
    Visual Studio .NET 2005 provides full Intellisense for XML, including showing validation errors in the task list.


    Figure: Visual Studio 2005 highlights XML errors and shows them in the error list


  15. "Load Last Loaded Solution" Bypass

    I like using the "Load last loaded solution" option. However sometimes I know I don't want that solution to open when I open VS.NET. There should be a feature "Hold down shift to bypass" as there is in access.

    VS Shift startup
    Figure: Let me bypass the "Load Last Loaded Solution" - just like I could with Access

    Update: Visual Studio .NET 2005 Beta 2 - Not done
    Microsoft have not added this feature this but our suggestion has been acknowledged for a future release. See http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=9944f713-2b0b-4dbe-a3db-9c1cfa563b35 for more information.


  16. Tab Control ordering problem

    This is a known issue about Tab control designer. When you load a tab control which contains too many tabs, the designer will move the tabs around sometimes, not following the initial order.  A work around about this is to place some code in your form constructor, right after InitializeComponent(), to clear all the tab pages from your tab control and add them again in the order you want. See problem, http://www.syncfusion.com/FAQ/WinForms/FAQ_c93c.asp#q959 for more information regarding this problem.

    Update: Visual Studio .NET 2005 Beta 2 - Fixed
    Microsoft have fixed this bug in Visual Studio .NET 2005 Beta 2.


  17. Need a Linker to make .exe's include required .NET components

    I agree with Joel Spolsky You are about to leave the SSW site when he says we need a Linker:

    "For some reason, Microsoft's brilliant and cutting-edge .NET development environment left out one crucial tool... a tool that has been common in software development environments since, oh, about 1950, and taken so much for granted that it's incredibly strange that nobody noticed that .NET doesn't really have one."

    Source: Joel Spolsky, 2004, "Joel On Software - Please Sir May I Have a Linker?", Accessed 3 December 2004. URL: http://www.joelonsoftware.com/articles/PleaseLinker.htmll

  18. Shortcut for generating properties

    Public properties have a number of advantages to public fields (see Do you use Public/Protected Properties instead of Public/Protected Fields?) but the syntax for generating them is tedious, particularly if there is no logic in the accessors:

    public int Count
    {
       get
       {
          return _count;
       }
       set
       {
          _count = value;
       }
    }

    Instead we should be able to write:

    public int Count : _count;

    Alternatively, it would be nice if when you right-clicked a private field, there were two extra options, "Generate Public Property" and "Generate Protected Property", which would generate the block of code above.

  19. Designing forms after modifying code

    There is a bug in VS.NET!

    This bug can put invalid entries in your project files, for example vbproj and csproj, when you go back and modify the code in your forms (particularly if you touch the initializer). The solution is to simply remove and re-add the forms to your project. This will correct the entries in your VS.NET project file.

    Visual.NET bug
    Figure: Code sample

    For more information on this bug, please go to our KB article.


  20. Need ticks and crosses on Reference Paths Page

    When a project has an invalid Reference Path, the project tries to search for references in that folder even though it does not exist. This adds substantial load time to the project (one solution loaded in 1 min 53 sec with an invalid reference path). When that invalid path was removed the time was now reduced to 12 seconds.

    To prevent this problem:

    1. ticks and crosses should appear on the page below to identify folders that do not exist,
    2. these problems should also appear in the Task List to make it more visible.

    Figure: Reference Paths options screen with "D:\Dev" being the invalid path.

    Update: Visual Studio .NET 2005 - Not done
    This has not been fixed in Visual Studio 2005. However some improvements have been made to point 1. For a path that is not valid the "Update" button becomes Enabled.
    We still need the ticks and crosses as suggested above.

    References Page in Visual Studio 2005
  21. Need a DataBinding Smart Tasks shortcut


    Figure: Smart Tasks menu
    Can you add to the Smart Task "DataBindings..." that would bring up this form

    Figure: Formatting And Advanced Binding dialog

  22. Improve Data Source Configuration Wizard



    1. Figure: Choose a Data Source Type
      I find most developers either have a plan to try using Objects or Datasets
      I find this bit unintuitive, when a developer uses data binding they either think "business objects" or "datasets". Can we reword the description for "Objects" to:
      "Lets you choose an object or a dataset that can later be used to generate data-bound control."

    2. Maybe add a tip that shows this image...

      Figure: If you are using Datasets it is good to organize all your datasets into one project

    3. Add a tip: It is Best Practise is to connect to a project called "Business" (for business objects) or "Data" (for data sets)

      Figure: Add a tip here...

  23. File Open dialog should have "Current Solution"

    I usually want to add images that already exist in the solution.
    It would be handy to add a 4th icon to the File Open dialog called "Current Solution"

    Figure: It would be more convenient if we have a "Current Solution"

  24. Should be able to drag and drop a typed dataset onto the form designer

    To use a Dataset in a Windows or Web form, you have to create an instance of the typed DataSet from your DataSets project. Currently you have to drag an instance of the dataset from the toolbar then define its type, but wouldn't it be nice to simply drag the .xsd onto the form designer and have Visual Studio figure out the rest?

    Figure: I should be able to drag this typed DataSet onto my form designer to create an instance of it
  25. Combo box with lookup button

    One of the problems that .NET developers have when they design in a bound environment is that they put combo boxes on forms which show a big list. This is not only hard to navigate once you start showing hundreds of records, it can also causes the form to take longer to load and put unnecessary strain on the database.

    A better option is to include next to the combo box an ellipsis button "..." which pops up a lookup form.

    Figure: Developers typically return all records for a data bound combobox field, which can increase form load time and put unnecessary strain on the database
  26. Modification of version numbers

    Version Numbers should be consistent there are few exceptions e.g. for backward compilation, you may have to keep Assembly Version unchanged and only increase File Verison for each build. But Visual Studio .NET makes it too easy to let them get out of sync.



    Microsoft, please make these modifications to the labels and add this checkbox
    Assembly Version (when increased it breaks compatibility for depended .dlls) [ ] [ ] [ ] [ ]
    [x] Copy Assembly Version (disables below)
        File Version (shown in Windows Explorer) [ ] [ ] [ ] [ ]

    Once you have choosen to go ClickOnce then there is no point to have a Separate Assembly and File Version and Published version
    So Microsoft, my suggestion is to add a checkbox to below form
    [x] Copy Assembly Version
        (to be disable the 4 version text boxes)

    I agree with this suggestion, but have a different take. Once developers move to ClickOnce deployment, the assembly and file versions become irrelevant. The Publish Version is your point of Config Management because it drives the deployment and update mechanisms. There should be an easy way to keep them in sync, but I would say it should flow from Publish Version to Assembly and File Version, not the other way around. Although bi-directional flow would be best let people manage whichever one they prefer.

    Brian Noyes (Author of Smart Client Deployment with ClickOnce, Addison Wesley)



  27. Load MRU (Most Recently Used) lists as a background process during Save or Delete

    During the process of saving a file to a machine, Visual Studio tries to load recently used files.
    This can cause an unnecessary delay when the machine is not connected to the network that a previous project was saved on; after a certain period it times out and goes on to save the file.
    The temporary fix to this is deleting all items in the registry under the key HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\ProjectMRUList and restart VS2005.

    Figure: Delete all items in the registry key HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\ProjectMRUList

    This is a common issue in a lot of applications; freezes are usually caused by trying to access a network resource that is not available. MRU processes should be executed as background threads so that they dont lock up the main UI and leave the developer waiting.

  28. Exclude <pre> tag when performing code auto-format

    Code auto-format (Ctrl-K, Ctrl-F) is very handy for developers to product a nicely structured codes. Unfortunately this function also automatically formats the content of a <pre> tag where whitespace is significant and formatting should be preserved.

    <pre> Try '' sample code Catch '' sample code End try </pre>
    Figure: Nicely formatted html code
    <pre> Try '' sample code Catch '' sample code End try </pre>
    Figure: All formatting in <pre> code is destroyed
  29. Need a file association for Web.Config

    When you first find an ASP.NET solution you are in Windows Explorer. The first step is usually to have a look in web.config to look at some of the settings the project uses. e.g. Connection string.

    It would be good if we could double click on that and we see a GUI instead of seeing XML.
    Ideally the GUI would show bold settings for the stuff that is not default.

    Figure: It would be nice to see a GUI for a web.config instead of XML

    PS: This would be great for ".SLN" files too, so we can see stuff like the projects that are in it (and even show red crosses for broken/moved projects).

  30. DataDude does not synchronise the Schema for Stored Procedures

    The prefix of the stored procedure in the generated script is not the same as the source. This is not fixed in the Service Release 1.

    Figure: Datadude recognises the schema are different, but generates the incorrect update script.
  31. Compare two items of the same type

    Sometimes, I want to compare two items of the same type so that I can tell which one is good. Please allow me to select two items of the same type in the designer and to get differences of their properties.
    E.g. these ListViews, they've got so many properties I can't tell them apart!

    compare two items of the same type
    Figure: Compare two items of the same type.
  32. DataDude needs a "select all"

    A top checkbox to "select all" in the form.
    The header of checkbox column should contain a checkbox by default. This checkbox can let users select or unselect all the checkboxes underneath it.

    SqlServer - 'Select all' checkbox
    Figure: SqlServer Management Studio - "select all" checkbox
    DataDude - No 'select all' checkbox
    Figure: These is no "select all" checkbox in the table list of DataDude.
  33. DataDude should explain the reason of droping constraints

    In the data compare, when you make a couple of changes to the customer table it drops every constraint.
    Please add in the comments it creates at the top the reason for this ?it seems unnecessary and melodramatic!

    /*
    This script was created by Visual Studio on 31/10/2006 at 5:02 PM.
    Run this script on schnauzer.AdventureWorks_v1.dbo to make it the same as schnauzer.AdventureWorks_v2.dbo.
    This script performs its actions in the following order:
    1. Disable foreign-key constraints.
    2. Perform DELETE commands.
    3. Perform UPDATE commands.
    4. Perform INSERT commands.
    5. Re-enable foreign-key constraints.
    Please back up your target database before running this script.
    */
    SET NUMERIC_ROUNDABORT OFF
    GO
    SET XACT_ABORT, ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS ON
    GO
    -- Pointer used for text / image updates. This might not be needed, but is declared here just in case
    DECLARE @pv binary(16)
    BEGIN TRANSACTION
    ALTER TABLE [Sales].[Customer] DROP CONSTRAINT [FK_Customer_SalesTerritory_TerritoryID]
    ALTER TABLE [Sales].[SalesPersonQuotaHistory] DROP CONSTRAINT [FK_SalesPersonQuotaHistory_SalesPerson_SalesPersonID]
    Figure: The update script generated by Data Dude
  34. Inform the developer when adding referrence

    When the wizard adds new reference to the project,developers should be informed. E.g. If a programmer wants to add a LINQ to SQL class via wizard, the reference to System.Data.Linq.dll will be added to the project.Actually, the programmer may don't know that.

    Add reference and inform programmers
    Figure: A reference is added automatically by wizard.
  35. Need "Auto increment the build number on each Compile" check box

    Add a check box in below form: [x] Auto increment the build number on each Compile:

    Need a option
    Figure: In this form need a "Auto increment the build number on each Compile" check box.

    you can get more from our rules:

    Is your version number meaningful?
    Do you display the version number publicly?
    Do you always update the version number whenever a new build is made?

  36. Add Shortcut Key to format HTML

    If we open a page using Word, we can use Control + Space to remove the style of HTML and make the words with the same font and size. But in Visual Studio 2008, there is no functionality like this. With this shortcut, designer can edit and re-format pages easier.

    Need a shortcut
    Figure: Need a shortcut to format HTML.
  37. Full 64 bit support

    eg. Edit-and-continue in VS is not supported on the 64-bit platforms

    Note: There is a work around. If you need Edit and Continue in Visual Studio on a 64 bit PC, you can temporarily run the debugging process with the “x86” option, and then switch back to “Any CPU” when you terminate with debugging.

    It work perfectly.

    Need x64 support
    Figure: How to make Edit and Continue to work on 64 bit

Microsoft Windows .NET Suggestions

  1. Neat format when copying Tables and Views (developers) and .NET Data Grids (end users)

    When a row is copied to the clipboard from a table/view in Microsoft Access and pasted into a word-processing document (e.g. WordPad, Word), the data is automatically formatted as a table.

    This doesn't work with .NET DataGrids; instead, when pasted into a document, the row comes out as a string of characters and tabs that make up the row, not as a formatted table.

    Contacts
    Figure: The pasted row turnes out alright when copied from Access.

    Contacts
    Figure: This is the same row copied from a Visual Studio DataGrid/DataGridView - the formatting should be as good as Access was in 1992!

    In addition, add the ability to copy from a list box. Once you have this, then I won't have this silly recommendation.

  2. Right-Click/Filter-By Control for Tables and Views (developers) and .NET Data Grids (end users)

  3. This is exactly the same functionality I requested for Outlook, but giving developers access to this Control would be very handy.

  4. Make .NET TreeView Tri-State

    The .NET TreeView control allows for the display of checkboxes beside each item. If these checkboxes were tri-state; i.e. could be either checked, unchecked or gray, it would make it easier for certain types of information to be represented.

    For example, if the sub-items of a particular tree node were partially selected and the node was collapsed, the checkbox for that node would fittingly be neither checked nor unchecked but gray.

    treeview
    Figure: Here's an example of where a tri-state-checkbox TreeView could be implemented.

  5. Invoking an OLE DB Data Link Properties Dialog Box

  6. The OLE DB Data Link Properties Dialog Box (see screenshot) is a commonly used dialog that allows a user to configure a connection to an OLE DB data source.

    There are well documented methods of invoking this dialog box from a Visual Basic 6.0 application. (See Microsoft's HOWTO: Invoke the OLE DB Data Link Properties Dialog Box in Visual Basic Code page.) For .NET programmers, however, there should be a native .NET class for handling this.

    Data link properties
    Figure: OLE DB Data Link Properties Dialog Box


    Figure: Visual Studio 2005 comes with a new Database Connection dialog, but it is not publicly accessible from an API

    It would be a good thing for developers to use the standard UDL control to get database settings in their applications.

    This functionality could be provided as part of the System.Windows.Forms as a standard UI form (for example "File Open" functionality). You should be able to filter out datasources based on their type (e.g. hide all OLE types) just as you might filter out file extensions.

    PS: And please Scott Guthrie (from the ASP.NET team), give us the same thing in a web control.

     

  7. Make Separate Event Handlers for ToolBarButtons (this is total inconsistency)

  8. Visual Basic .NET has made the implementation of menus on forms quite simple and straightforward. Each MenuBar has its own MenuItems, and each of these MenuItems can be assigned a separate event handler, as in the following example. Private Sub MenuItem6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem6.Click
        ClientNew()
    End Sub

    Private Sub MenuItem7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem7.Click
        ApplyFilter()
    End Sub

    Private Sub MenuItem9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem9.Click
        RemoveFilter()
    End Sub
    Figure: VB .NET menu example

    There are similarities between creating MenuItems for a MenuBar and creating ToolBarButtons for a ToolBar. It would be easy and convenient to handle each toolbar button's Click event separately. However, this is not possible.

    The only way to process such an event at all, currently, is to use the ToolBar's ButtonClick event, as seen below.

    Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
        If e.Button Is btnNewClient Then
            ClientNew()
        ElseIf e.Button Is btnApplyFilter Then
            ApplyFilter()
        ElseIf e.Button Is btnRemoveFilter Then
            RemoveFilter()
        Else
            MsgBox("Logic Error")
        End If
    End Sub
    Figure: Toolbar ButtonClick event

    As you can see, it would be simpler and less messy if we had each menu item's Click event handled in a separate event procedure.

  9. DirtyProvider control

  10. Many intrinsic .NET controls could benefit from an IsDirty property (or equivalent) that allows you to query whether or not the control has been changed by the user in any way.

    An IsDirty property could be provided by an extended provider in much the same way as the Tooltip property is provided by the ToolTip control.

    The code below demonstrates the use of an IsDirty property.

    If DirtyProvider1.GetIsDirty(Me) = True Then
       
       Dim result As MsgBoxResult = MsgBox("Do you want to save changes?", MsgBoxStyle.YesNoCancel, "Save")
       
       Select Case result
          Case MsgBoxResult.Yes
             Save()
          Case MsgBoxResult.Cancel
             e.Cancel = True
          Case MsgBoxResult.No
             ' Do nothing - the form will close
          Case Else
             MsgBox("Logic Error")
       End Select

    End If
    Figure: Example IsDirty code
  11. Make Extender Provider Properties More Visible

  12. Extender providers are objects that add properties to other controls. They are useful in a number of areas. For example, the ErrorProvider control adds an Error property to all controls, through which the developer can provide notification of errors to the user.

    However, properties specific to a particular extender provider are often difficult to locate in the properties window because they're mixed in with other properties belonging to a control. Extender provider properties should be separated from normal properties; this could be done by:

    • Color-coding them in the properties window (using the background color)
    • Allowing the user to select an extender provider from the top combo (see figure)

      form

      Figure: Extender provider could be selected from the top combo box

    Furthermore, when an extender provider and a normal control are selected simultaneously, none of the extender properties are shown in the properties window, as seen below.

    Extended provider

    Figure: Extender provider properties should be shown when extender provider and regular control are selected.

  13. Sub forms

    Access sub forms were fantastic. So simply and so effective. Visual Studio needs an out-of-the-box equivalent to manage Master/Child relationships.

  14. Hiding properties in inherited forms

    Using special attributes, it is possible to hide properties from the designer in inherited forms (see Rules to Better Windows Forms). However, it would be better to be able to disable properties (have them appear grayed out or with strikethrough).

  15. Would like a Bread crumb control for windows forms

    This would be used in wizards this is too much work to do manually at the moment.

    Extended provider
    Figure: Bread crumb control for SSW Upsizing PRO!.

  16. ListView shouldn't change the checkbox's checkstate on double click

    By default, ListView with checkboxes will automatically check or uncheck the checkbox on double click. This default behaviour somehow could be very annoying and make your ListView looks bugged if you have a custom action for double click event.

    Example of ListView that should have custom action on double click:
    This ListView needs custom action on double click.
    Users would expect to edit the value of "Path" on double click, not check/uncheck the checkbox.
    Double click should really just do 1 action (edit).

    How we fix this:

    private bool isDoubleClick = false; private void listView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if ((e.Button == MouseButtons.Left) && (e.Clicks >= 2) ) { isDoubleClick = true; } } private void listView1_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e) { if (isDoubleClick) { e.NewValue = e.CurrentValue; isDoubleClick = false; } } private void listView1_DoubleClick(object sender, System.EventArgs e) { // Your custom action for double click goes here. :) }

    Suggestion:
    Make a boolean property "Automatically check/uncheck checkbox on double click".
    Automatically check/uncheck the checkbox is good (and needed) if the ListView doesn't have any action on double click.

  17. Need the ability to trim characters from a string that does not completely fit into a ListView column

    To implement a custom string trimming in ListView, we need to override the Paint event of the ListView. However, the ListView in .NET 1.x is not really a .NET control, it is just wrapper around the control in ComCtl. It doesn't have the OwnerDraw property and Paint Event like other .NET controls.
    There are a few workarounds like generating Paint Event for ListView on CodeProject.com, but they don't work out really good.