-
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.
|
-
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.
|
-
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.
|
-
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
-
Back and Forward Buttons Should Look Like Internet Explorer
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.
|
-
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.

Figure: Right-clicking on a project in Solution Explorer.
-
.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:
- It is difficult for users to find what they're looking for.
- 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.

Figure: Add Reference dialog box in Visual Studio.
-
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.
|
-
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.
|
-
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.
|
-
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
|
-
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.

Figure: Provide Feedback with Sound option in Office
-
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.

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
|
-
"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.

Figure: Let me bypass the "Load Last Loaded Solution" - just like I could with Access
-
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.
|
-
Need a Linker to make .exe's include required .NET components
I agree with Joel Spolsky
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
-
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.
-
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.
Figure: Code sample
For more information on this bug, please go to our
KB article.
-
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:
- ticks and crosses should appear on the page below to identify folders that do not
exist,
- 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.
|
-
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
-
Improve Data Source Configuration
Wizard
-

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."
-
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
-
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...
-
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"
-
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
-
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
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)

-
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.
-
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
-
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).
-
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.
-
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!
-

-
Figure: Compare two items of the same type.
-
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.

- Figure: SqlServer Management Studio - "select all" checkbox

- Figure: These is no "select all" checkbox in the table list of DataDude.
-
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
-
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.
-

-
Figure: A reference is added automatically by wizard.
-
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:
-

-
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?
-
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.
-

-
Figure: Need a shortcut to format HTML.
-
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.
-

-
Figure: How to make Edit and Continue to work on 64 bit
-
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.

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

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.
-
Right-Click/Filter-By Control for Tables and Views
(developers) and .NET Data Grids (end users)
This is exactly the same functionality I requested for
Outlook, but giving developers access to this Control would be very handy.
-
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.

Figure: Here's an example of where a tri-state-checkbox TreeView could be implemented.
-
Invoking an OLE DB Data Link
Properties Dialog Box
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.

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.
-
Make Separate Event Handlers
for ToolBarButtons (this is total inconsistency)
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.
-
DirtyProvider control
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
-
Make Extender Provider Properties
More Visible
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)

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.

Figure: Extender provider properties should be shown when extender provider and regular
control are selected.
-
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.
-
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).
-
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.

Figure: Bread crumb control for SSW Upsizing PRO!.
-
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:
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.
-
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.