Bug Fixes

There are quite a good number of bugs that are present in the .NET Framework (most of them are in the System.Windows.Forms library) and that are now considered features by Microsoft. These bugs make it very hard to use the .NET Framework in a real life business application without having to write your own workarounds, fixes and implementations.

The bugs we have found and fixed are not fundamental bugs that undermine the framework, are higher level implementation bugs that while not catastrophic are nevertheless serious and cannot be left unfixed in a serious and professional application.

The list below contains just few examples of the kind of bugs that have been fixed in the PPJ Framework. These bugs are not immediately obvious and have been found and fixed because the PPJ Framework is used in many enterprise level applications.

Number parsing

Parsing a string into a number is seriously flawed in the .NET Framework. For example, parsing "12.00" using a locale that expects a comma for the decimal places returns the 1200 number value instead of a parsing error. There are many variations of this faulty parsing.

Formatted parsing of dates and numbers

The default .NET implementation of number and date parsing doesn't support complex format strings including also the negative pattern. Number parsing doesn't support any format string at all: you cannot parse say "EUR 1,200" into a numeric value by providing a format string.

Modified flag

The built-in modified flag of the TextBox controls is not reset when the value of the control is assigned and it's the same as the previous value. Most other controls don't even have a Modified flag, which has been added to the PPJ extensions.

Oracle decimal columns

The default ADO.NET implementation doesn't support Oracle decimal columns and generates an overflow exception when trying to convert OracleDecimal to the native decimal type. This problem makes it impossible to write database independent code when dealing with Oracle decimals.

Validation

The built-in validation of .NET controls is not fully implemented. For example, controls are not validated when losing the focus to another form and, in some cases, even to other controls. Validation between MDI child forms is also very dysfunctional in WinForms.

MDI

The MDI implementation in the .NET Framework is not sufficient. Hidden MDI child forms are not supported, iconized MDI child forms are not restored automatically.

Inherited Properties

Property values inherited from controls' base classes are not recognized by Visual Studio designer and are replicated into the form being designed in effect breaking the inheritance.

Unify/Gupta ADO.NET driver

There are several bugs in SQLBase ADO.NET driver that we have fixed in the PPJ Framework. Bugs include returning the wrong field type when @IF() is used, not supporting null values properly, not returning the milliseconds part of a DATETIME value.

Ingres/Informix/DB2 ADO.NET drivers

IBM's ADO.NET drivers have problems with DateTime and Decimal data types. In the PPJ Framework we added optional switches to work around these bugs by automatically formatting and parsing DateTime and Numeric values to and from strings.

Last updated