/// <summary>
        /// See base docs.
        /// </summary>
        /// <param name="disposing"></param>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_Sorter != null)
                {
                    _Sorter.Dispose();
                    Control.ListView.ListViewItemSorter = null;
                }

                if (_ControlHooked)
                {
                    Control.CheckedChanged     -= Control_CheckedChanged;
                    Control.EditClicked        -= Control_EditClicked;
                    Control.DeleteClicked      -= Control_DeleteClicked;
                    Control.AddClicked         -= Control_AddClicked;
                    Control.FetchRecordContent -= Control_FetchRecordContent;
                    _ControlHooked              = false;
                }

                if (_ModelListHooked)
                {
                    ModelListBindingList.ListChanged -= ModelListBindingList_ListChanged;
                    _ModelListHooked = false;
                }
            }

            base.Dispose(disposing);
        }