示例#1
0
		private void PerformSmartColumnSizing(BeforeSizingOperationDelegate beforeSizingOperation)
    	{
    		_isInternalColumnWidthChange = true;
    		_dataGridView.AutoSizeColumnsMode = (_manualColumnWidths == null) ? DataGridViewAutoSizeColumnsMode.Fill : DataGridViewAutoSizeColumnsMode.None;
    		this.SuspendLayout();

    		try
    		{
    			if (beforeSizingOperation != null)
    				beforeSizingOperation.Invoke();

    			if (_manualColumnWidths != null)
    			{
    				int totalColumnWidth = 0;
    				foreach (DataGridViewColumn column in _dataGridView.Columns)
    					totalColumnWidth += column.Visible ? GetManualColumnWidth(column) : 0;

    				float clientAreaWidth = _dataGridView.ClientSize.Width;
    				VScrollBar scrollBar = (VScrollBar) CollectionUtils.SelectFirst(_dataGridView.Controls, c => c is VScrollBar);
    				if (scrollBar != null && scrollBar.Visible)
    					clientAreaWidth -= scrollBar.Width;

    				float widthMultiplier = 1;

    				if (totalColumnWidth < clientAreaWidth)
    					widthMultiplier = (clientAreaWidth)/totalColumnWidth;

    				foreach (DataGridViewColumn column in _dataGridView.Columns)
    					column.Width = (int) (GetManualColumnWidth(column)*widthMultiplier);
    			}
    		}
    		finally
    		{
    			this.ResumeLayout(true);
    			_dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
    			_isInternalColumnWidthChange = false;
    		}
    	}
示例#2
0
文件: TableView.cs 项目: nhannd/Xian
		private void PerformSmartColumnSizing(BeforeSizingOperationDelegate beforeSizingOperation)
    	{
    		_isInternalColumnWidthChange = true;
    		_dataGridView.AutoSizeColumnsMode = (_manualColumnWidths == null) ? DataGridViewAutoSizeColumnsMode.Fill : DataGridViewAutoSizeColumnsMode.None;
    		this.SuspendLayout();

    		try
    		{
    			if (beforeSizingOperation != null)
    				beforeSizingOperation.Invoke();

    			if (_manualColumnWidths != null)
    			{
    				int totalColumnWidth = 0;
    				foreach (DataGridViewColumn column in _dataGridView.Columns)
    					totalColumnWidth += column.Visible ? GetManualColumnWidth(column) : 0;

    				float clientAreaWidth = _dataGridView.ClientSize.Width;
    				VScrollBar scrollBar = (VScrollBar) CollectionUtils.SelectFirst(_dataGridView.Controls, c => c is VScrollBar);
    				if (scrollBar != null && scrollBar.Visible)
    					clientAreaWidth -= scrollBar.Width;

    				float widthMultiplier = 1;

    				if (totalColumnWidth < clientAreaWidth)
    					widthMultiplier = (clientAreaWidth)/totalColumnWidth;

    				foreach (DataGridViewColumn column in _dataGridView.Columns)
    					column.Width = (int) (GetManualColumnWidth(column)*widthMultiplier);
    			}
    		}
    		finally
    		{
    			this.ResumeLayout(true);
    			_dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
    			_isInternalColumnWidthChange = false;
    		}
    	}