private void InsertGroupNative(int index, ListViewGroup group)
 {
     System.Windows.Forms.NativeMethods.LVGROUP lParam = new System.Windows.Forms.NativeMethods.LVGROUP();
     try
     {
         lParam = this.GetLVGROUP(group);
         int num1 = (int) System.Windows.Forms.UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x1091, index, lParam);
     }
     finally
     {
         this.DestroyLVGROUP(lParam);
     }
 }
 internal void UpdateGroupNative(ListViewGroup group)
 {
     System.Windows.Forms.NativeMethods.LVGROUP lParam = new System.Windows.Forms.NativeMethods.LVGROUP();
     try
     {
         lParam = this.GetLVGROUP(group);
         int num1 = (int) System.Windows.Forms.UnsafeNativeMethods.SendMessage(new HandleRef(this, base.Handle), 0x1093, group.ID, lParam);
     }
     finally
     {
         this.DestroyLVGROUP(lParam);
     }
     base.Invalidate();
 }
        private System.Windows.Forms.NativeMethods.LVGROUP GetLVGROUP(ListViewGroup group)
        {
            System.Windows.Forms.NativeMethods.LVGROUP lvgroup = new System.Windows.Forms.NativeMethods.LVGROUP {
                mask = 0x19
            };
            string header = group.Header;
            lvgroup.pszHeader = Marshal.StringToHGlobalAuto(header);
            lvgroup.cchHeader = header.Length;
            lvgroup.iGroupId = group.ID;
            switch (group.HeaderAlignment)
            {
                case HorizontalAlignment.Left:
                    lvgroup.uAlign = 1;
                    return lvgroup;

                case HorizontalAlignment.Right:
                    lvgroup.uAlign = 4;
                    return lvgroup;

                case HorizontalAlignment.Center:
                    lvgroup.uAlign = 2;
                    return lvgroup;
            }
            return lvgroup;
        }