Example #1
0
        void _vScrollBar_ValueChanged(object sender, EventArgs e)
        {
            //这里判断的原因是可能在 _vScrollBar_Scroll 事件里就赋值过了
            if (_itemsAreaOffset != _vScrollBar.Value)
            {
                _itemsAreaOffset = _vScrollBar.Value;
            }

            _imageListView.SuspendLayout();

            if (MouseSelecting)
            {
                //如果处于框选状态,在重新绘制控件之前需要计算新的 SelectionRectangle
                //因为SelectionRectangle一开始是在MouseMove中计算的,而当鼠标拉出控件边界时
                //滚动条会继续滚动,如果此时保持鼠标不动,就要靠这里计算 SelectionRectangle 了
                SelectionRectangle = CreateSelectionRectangle();
                SelectItemsByRectangle(SelectionRectangle);
            }

            _imageListView.ResumeLayout(true);

            CalculateVisibleItemsRange();
        }