コード例 #1
0
ファイル: XDataGridView.cs プロジェクト: yangyunping/TMS
        /// <summary>
        /// 重新按照当前设置排序并刷新显示,且定位到刷新前选中的那一行
        /// </summary>
        public override void Refresh()
        {
            // 先确定原来选中的项,按当前排序规则重排
            T selectedItem = default(T);

            if (HasSelectedItem)
            {
                selectedItem = DataList[SelectedItemIndex];
            }
            if (!Sort(SortedColumn, SortOrder))
            {
                return;                                // 如果重排成功,才需要重新定位到之前的选中行
            }
            int nIdx = DataList.FindIndex(t => selectedItem.Equals(t));

            if (-1 != nIdx)
            {
                ClearSelection();
                DataGridViewRow row = Rows[nIdx];
                row.Selected = true;
                if (!row.Displayed)
                {
                    FirstDisplayedScrollingRowIndex = nIdx;                // 选中行不在当前显示区域内,则滚动到选中行
                }
            }
            base.Refresh();
        }