.NetGrid v2.9.5 has been released.

Posted on | February 9, 2014 | No Comments

A new grid version containing error fixes has been released.

The following improvements have been made:

  • [NEW] Improved the Grid’s disposal algorithm.

The following bugs have been fixed:

  • [BUG]  Fixed an error when a red line indicating dropping position stays on the screen until closing the application.

.NetGrid v2.9.4 has been released.

Posted on | November 3, 2013 | No Comments

A new grid version containing minor error fixes has been released.

The following bugs have been fixed:

  • [BUG] Fix for the grid’s verbosity in the console of the VS IDE while painting.

 

 

.NetGrid v2.9.3 has been released.

Posted on | October 16, 2013 | No Comments

A new grid version containing mostly error fixes and performance improvements has been released.

The following improvements have been made:

  • [NEW] Significantly improved cell painting performance. Fixed an error with the grid re-painting the entire row on a notification from a field for which the column is hidden or non-existent.
  • [NEW] Improved the Grid’s disposal algorithm. Handling of the situation when a grid can be disposed in the main thread and receive notifications from a non-GUI thread at the same time has been fixed as compared to the previous version.

The following bugs have been fixed:

  • [BUG] Fixed an error when a grid smaller than 20 pixels sometimes could generate exceptions on cell painting.
  • [BUG] Fixed rendering error when paining merged columns in RTL modе.
  • [BUG] Fixed header painting error with freezed columns in RTL mode.
  • [BUG] Fixed an error when moved rows stopped receiving notifications from data source when a grid unsubscribed a row from a datasource with drag&drop operations.
  • [BUG] Fixed a CheckBoxEditor error when the grid could generate exceptions on partial editor visibility.

 

 

.NetGrid v2.9.2 has been released.

Posted on | August 5, 2013 | No Comments

A significant increase in productivity when working with objects that implement the INotifyPropertyChanged interface

The following bug has been fixed:

  • [BUG] Fixed a bug where the grid redraw the content of the entire row upon receiving notification from INotifyPropertyChanged interface for missing or hidden column.
  • [BUG] Fixed minor bugs in the designer.

.NetGrid v2.9.1 has been released.

Posted on | June 12, 2013 | No Comments

Fixed an error where the grid does not correctly deserialize columns without filters from xml file.

.NetGrid v2.9.0 has been released. New features and bug fixes

Posted on | June 5, 2013 | No Comments

We are glad to introduce a new grid version with improved performance and stability. We have added dozens new tests to cover various grid functions. We want to thank our customers for their feedback on products and ease of use and critical comments that help us make our products best on the market.

The following features have been added:

  • [NEW] Added column filter serialization
  • [NEW] Reengineered grid designer introducing intuitive and convenient user interface.
  • [NEW] Significantly improved grid performance with selection large data volumes.
  • [NEW] Overall performance improvement.

The following bugs have been fixed:

  • [BUG] Fixed an error with the grid not unsubscribing from objects with composite properties when objects are removed from the grid.
  • [BUG] Fixed an error with Dapfor.Net.dll not appearing in the list of available assemblies in Visual Studio.
  • [BUG] Fixed an error with Column.Appearance property hiding cell highlighting.
  • Minor bug fixes

 

 

.NetGrid v2.8.5 has been released. New features and bug fixes

Posted on | December 18, 2012 | No Comments

The new version includes several bug fixes and new features added to Dapfor’s framework. The following features have been added:
  • [NEW] added new DecimalFormat and a corresponding DecimalFormatAttribute for declarative formatting.
    public class Product
    {
        private decimal price;
    
        [DecimalFormat(Precision = 3, ShortForm = true, ShowZero = false)]
        public decimal Price
        {
            get { return price; }
        }
    }
  • [NEW] Added new Grid.FocusedColumnChanged event.
  • [NEW] Added a section for grid painting system.
  • [NEW] Added a section for cell highlighting system.
  • [NEW] Added a new example that demonstrates design of Backet component that is used for measuring weight of financial instruments in the basket. Contains detailed explanation of main principles of developing high-performance application with intensive computing operations. Describes specifis of painting system in Windows OS.

The following bugs have been fixed:

  • [BUG] The standard editor drop-downs do not appear on the correct monitor, if the main monitor is the right monitor, and the editor is being hosted on a monitor to the left of it.
  • [BUG] The grid didn’t start editing data if nullable types existed.
  • [BUG] If Grid.DataObjects were used, the grid didn’t clear collection on calling Grid.Rows.Clear() method.
  • [BUG] Change of focused columns was displayed incorrectly in FocusMode.Cell focusing mode.
  • [BUG] The grid was hiding some rows when binding data in grid with existing grouping.
  • Minor bug fixes

 

Using Application.DoEvents() in real-time applications is dangerous!

Posted on | November 6, 2012 | No Comments

It has been numerously written that Application.DoEvents() method is not desirable, especially for high-performance applications. There are many reasons for this starting from message processing procedure and ending with non-evident problems with application response  to user activity and code execution.

In most cases programmers use this method without thinking of consequences or its working principle. MSDN documentation says that this method processes messages in queue and when there are no more messages it stops working and passes control to the next code.
In simplified form this method looks as follows:

NativeUnsafeMethods.MSG msg;
while (PeekMessage(out msg))
{
TranslateMessage(ref msg);
DispatchMessage(ref msg);
}

However, we may wonder what happens when application is intensively rendering controls, synchronizing threads and performing other operations in GUI thread? In such situation message queue always contains messages that don’t let method finish its work. As the result, the end user won’t notice the difference in application behavior as Application.DoEvents() will process executing messages, including WM_PAINT messages, i.e. controls will be redrawn and the program will not slow down. However, code execution will stop on Application.DoEvents() method. If there are important operations after this method, they will not be executed until message queue is freed. We have often seen the situation when application was updating stock market prices and in times of high volatility prices were updated with noticeable delays!!!

A simple example of the problem is shown below. Demo application intensively synchronizes threads and paints data. Main GUI thread continuously processes messages (including synchronization messages and WM_PAINT messages). Clicking Start button calls Application.DoEvents() once, and in normal situation it should immediately return control to subsequent code. However, in this example the things are different! This method is followed by MessageBox.Show(…) that doesn’t display anything.
If demo application is fully covered with any other window or collapsed in the taskbar, Windows stops sending WM_PAINT messages and as the result of it message queue becomes empty, Application.DoEvents() method stops and MessageBox.Show(…) is executed.

 

 

 

 

 

 

 

 

 

 

Download DoEventsExample.zip

Therefore, before using Application.DoEvents() programmers should look at application architecture and ask themselves whether this method is really necessary. If application code really requires Application.DoEvents(), we have added Dapfor.Net.Editors.MessageQueueHelper class starting from version 2.8.4. This class has similar behavior but it also supports maximum execution time limit. If there are no more messages in queue, MessageQueueHelper also stops and passes control to the subsequent code.

 

.NetGrid v2.8.4 has been released. Improvements when CPU is heavily loaded.

Posted on | October 29, 2012 | No Comments

This version contains bug fixes and performance improvements.

The following features have been added:

  • [NEW] Greatly improved the reliability and responsiveness of the grid when the CPU is heavily loaded.

The following bugs have been fixed:

  • [BUG] Fixed a bug in the column configurator which in some cases does not allow reordering of visible columns.
  • [BUG] Fixed a bug where merged columns were drawn with artifacts.
  • [BUG] Fixed a bug when the grid incorrectly draws cells if there are simultaneously visible grouped rows and child header.
  • [BUG] Fixed a bug when the grid incorrectly displays a vertical scrollbar if there are simultaneously visible grouped rows and child header.
  • Minor bug fixes

.NetGrid v2.8.3 has been released. Column filters

Posted on | September 13, 2012 | No Comments

This version contains minor bug fixes and some improvements.

  • [BUG] Under certain conditions, the .Net Grid can draw artifacts in editable cells.
  • [BUG] Fixed a bug where column filters do not work correctly on the second level of the hierarchy.
  • [BUG] Fixed a bug where column filters are able to filter only string values.
  • Minor bug fixes

keep looking »