/// <summary> /// When the header control sends a notification we need to /// process the click to sort, button click for options menu, /// and filter change to update the items currently visible. /// </summary> /// <param name="h">NMHEADER</param> private void NotifyHeaderMessage( NMHEADER h ) { // process only specific header notification messages switch( h.hdr.code ) { // a header column was clicked, do the sort case ( int )W32_HDN.HDN_ITEMCLICKA: case ( int )W32_HDN.HDN_ITEMCLICKW: _headerControl.SortColumn = _sortColumn = h.iItem; _sortOrderAscending = _headerControl.SortOrder; srt_datype = _headerControl.DataType[ _sortColumn ]; this.Sort(); SendMessage( this.Handle, W32_LVM.LVM_SETSELECTEDCOLUMN, _sortColumn, 0 ); SendMessage( this.Handle, W32_LVM.LVM_UPDATE, 0, 0 ); break; // a filter button was clicked display the popup menu // to handle setting filter options for the column case ( int )W32_HDN.HDN_FILTERBTNCLICK: _activeColumn = h.iItem; this.filterContextMenuStrip.Show( this, PointToClient( MousePosition ) ); break; // a filter content changed, update the items collection case ( int )W32_HDN.HDN_FILTERCHANGE: // if this is for item -1 then this is a clear all filters if( h.iItem < 0 ) _filters.Clear(); // if we are filtered this is a real filter data change else if( _showFilters ) FilterBuild( h.iItem ); // update the items array with new filters applied FilterUpdate(); break; } }
public TypedColumnHeader( ColumnHeaderDataType dataType ) { _dataType = dataType; }