#pragma warning restore 0414
#endif
        /// <include file='doc\DataGridView.uex' path='docs/doc[@for="DataGridView.DataGridView"]/*' />
        /// <devdoc>
        /// <para>Initializes a new instance of the <see cref='System.Windows.Forms.DataGridView'/> class.</para>
        /// </devdoc>
        public DataGridView()
        {
            SetStyle(ControlStyles.UserPaint | 
                     ControlStyles.Opaque | 
                     ControlStyles.UserMouse, true);
            
            SetStyle(ControlStyles.SupportsTransparentBackColor, false);

            // this class overrides GetPreferredSizeCore, let Control automatically cache the result
            SetState2(STATE2_USEPREFERREDSIZECACHE, true);  

            this.dataGridViewState1 = new System.Collections.Specialized.BitVector32(0x00000000);
            this.dataGridViewState2 = new System.Collections.Specialized.BitVector32(0x00000000);
            this.dataGridViewOper   = new System.Collections.Specialized.BitVector32(0x00000000);

            this.dataGridViewState1[  DATAGRIDVIEWSTATE1_columnHeadersVisible 
                                    | DATAGRIDVIEWSTATE1_rowHeadersVisible 
                                    | DATAGRIDVIEWSTATE1_autoGenerateColumns
                                    | DATAGRIDVIEWSTATE1_allowUserToAddRows
                                    | DATAGRIDVIEWSTATE1_allowUserToDeleteRows ] = true;



            this.dataGridViewState2[  DATAGRIDVIEWSTATE2_showEditingIcon
                                    | DATAGRIDVIEWSTATE2_enableHeadersVisualStyles
                                    | DATAGRIDVIEWSTATE2_mouseEnterExpected
                                    | DATAGRIDVIEWSTATE2_allowUserToResizeColumns
                                    | DATAGRIDVIEWSTATE2_allowUserToResizeRows
                                    | DATAGRIDVIEWSTATE2_showCellToolTips
                                    | DATAGRIDVIEWSTATE2_showCellErrors
                                    | DATAGRIDVIEWSTATE2_showRowErrors
                                    | DATAGRIDVIEWSTATE2_allowHorizontalScrollbar
                                    | DATAGRIDVIEWSTATE2_usedFillWeightsDirty ] = true;


            this.displayedBandsInfo = new DisplayedBandsData();
            this.lstRows = new ArrayList();

            this.converters = new Hashtable(8);
            this.pens = new Hashtable(8);
            this.brushes = new Hashtable(10);
            this.gridPen = new Pen(DefaultGridColor);

            this.selectedBandIndexes = new DataGridViewIntLinkedList();
            this.individualSelectedCells = new DataGridViewCellLinkedList();
            this.individualReadOnlyCells = new DataGridViewCellLinkedList();

            this.advancedCellBorderStyle = new DataGridViewAdvancedBorderStyle(this, 
                DataGridViewAdvancedCellBorderStyle.OutsetDouble, 
                DataGridViewAdvancedCellBorderStyle.OutsetPartial, 
                DataGridViewAdvancedCellBorderStyle.InsetDouble);
            this.advancedRowHeadersBorderStyle = new DataGridViewAdvancedBorderStyle(this);
            this.advancedColumnHeadersBorderStyle = new DataGridViewAdvancedBorderStyle(this);
            this.advancedCellBorderStyle.All = defaultAdvancedCellBorderStyle;
            this.advancedRowHeadersBorderStyle.All = defaultAdvancedRowHeadersBorderStyle;
            this.advancedColumnHeadersBorderStyle.All = defaultAdvancedColumnHeadersBorderStyle;
            this.borderStyle = defaultBorderStyle;
            this.dataGridViewState1[DATAGRIDVIEWSTATE1_multiSelect] = true;
            this.selectionMode = defaultSelectionMode;
            this.editMode = defaultEditMode;
            this.autoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
            this.autoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
            this.columnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
            this.rowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;

            this.clipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithAutoHeaderText;

            this.layout = new LayoutData();
            this.layout.TopLeftHeader        = Rectangle.Empty;
            this.layout.ColumnHeaders        = Rectangle.Empty;
            this.layout.RowHeaders           = Rectangle.Empty;
            this.layout.ColumnHeadersVisible = true;
            this.layout.RowHeadersVisible    = true;
            this.layout.ClientRectangle      = this.ClientRectangle;

            this.scrollBars = ScrollBars.Both;

            this.horizScrollBar.RightToLeft = RightToLeft.Inherit;
            this.horizScrollBar.AccessibleName = SR.GetString(SR.DataGridView_AccHorizontalScrollBarAccName);
            this.horizScrollBar.Top = this.ClientRectangle.Height - horizScrollBar.Height;
            this.horizScrollBar.Left = 0;
            this.horizScrollBar.Visible = false;
            this.horizScrollBar.Scroll += new ScrollEventHandler(DataGridViewHScrolled);
            this.Controls.Add(this.horizScrollBar);

            this.vertScrollBar.Top = 0;
            this.vertScrollBar.AccessibleName = SR.GetString(SR.DataGridView_AccVerticalScrollBarAccName);
            this.vertScrollBar.Left = this.ClientRectangle.Width - vertScrollBar.Width;
            this.vertScrollBar.Visible = false;
            this.vertScrollBar.Scroll += new ScrollEventHandler(DataGridViewVScrolled);
            this.Controls.Add(this.vertScrollBar);

            this.ptCurrentCell = new Point(-1, -1);
            this.ptAnchorCell = new Point(-1, -1);
            this.ptMouseDownCell = new Point(-2, -2);
            this.ptMouseEnteredCell = new Point(-2, -2);
            this.ptToolTipCell = new Point(-1, -1);
            this.ptMouseDownGridCoord = new Point(-1, -1);

            this.sortOrder = SortOrder.None;

            this.lastMouseClickInfo.timeStamp = 0;

            WireScrollBarsEvents();
            PerformLayout();

            this.toolTipControl = new DataGridViewToolTip(this);
            
            Invalidate();
        }
Esempio n. 2
0
		public void AutoResizeRowHeadersWidth (int rowIndex, DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode)
		{
			AutoResizeRowHeadersWidth (rowHeadersWidthSizeMode);
		}
Esempio n. 3
0
		protected void AutoResizeRowHeadersWidth (int rowIndex, DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode, bool fixedColumnHeadersHeight, bool fixedRowHeight)
		{
			AutoResizeRowHeadersWidth (rowHeadersWidthSizeMode);
		}
Esempio n. 4
0
		public DataGridView ()
		{
			SetStyle (ControlStyles.Opaque, true);
			//SetStyle (ControlStyles.UserMouse, true);
			SetStyle (ControlStyles.OptimizedDoubleBuffer, true);
			
			adjustedTopLeftHeaderBorderStyle = new DataGridViewAdvancedBorderStyle();
			adjustedTopLeftHeaderBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
			advancedCellBorderStyle = new DataGridViewAdvancedBorderStyle();
			advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
			advancedColumnHeadersBorderStyle = new DataGridViewAdvancedBorderStyle();
			advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
			advancedRowHeadersBorderStyle = new DataGridViewAdvancedBorderStyle();
			advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
			alternatingRowsDefaultCellStyle = new DataGridViewCellStyle();
			allowUserToAddRows = true;
			allowUserToDeleteRows = true;
			allowUserToOrderColumns = false;
			allowUserToResizeColumns = true;
			allowUserToResizeRows = true;
			autoGenerateColumns = true;
			autoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
			autoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
			backColor = Control.DefaultBackColor;
			backgroundColor = SystemColors.AppWorkspace;
			borderStyle = BorderStyle.FixedSingle;
			cellBorderStyle = DataGridViewCellBorderStyle.Single;
			clipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithAutoHeaderText;
			columnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
			columnHeadersDefaultCellStyle = new DataGridViewCellStyle();
			columnHeadersDefaultCellStyle.BackColor = SystemColors.Control;
			columnHeadersDefaultCellStyle.ForeColor = SystemColors.WindowText;
			columnHeadersDefaultCellStyle.SelectionBackColor = SystemColors.Highlight;
			columnHeadersDefaultCellStyle.SelectionForeColor = SystemColors.HighlightText;
			columnHeadersDefaultCellStyle.Font = this.Font;
			columnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
			columnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.True;
			columnHeadersHeight = 23;
			columnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
			columnHeadersVisible = true;
			columns = CreateColumnsInstance();
			columns.CollectionChanged += OnColumnCollectionChanged;
			currentCellAddress = new Point (-1, -1);
			dataMember = String.Empty;
			defaultCellStyle = new DataGridViewCellStyle();
			defaultCellStyle.BackColor = SystemColors.Window;
			defaultCellStyle.ForeColor = SystemColors.ControlText;
			defaultCellStyle.SelectionBackColor = SystemColors.Highlight;
			defaultCellStyle.SelectionForeColor = SystemColors.HighlightText;
			defaultCellStyle.Font = this.Font;
			defaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
			defaultCellStyle.WrapMode = DataGridViewTriState.False;
			editMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
			firstDisplayedScrollingColumnHiddenWidth = 0;
			isCurrentCellDirty = false;
			multiSelect = true;
			readOnly = false;
			rowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
			rowHeadersDefaultCellStyle = (DataGridViewCellStyle) columnHeadersDefaultCellStyle.Clone ();
			rowHeadersVisible = true;
			rowHeadersWidth = 41;
			rowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;
			rows = CreateRowsInstance();
			rowsDefaultCellStyle = new DataGridViewCellStyle();
			selectionMode = DataGridViewSelectionMode.RowHeaderSelect;
			showCellErrors = true;
			showEditingIcon = true;
			scrollBars = ScrollBars.Both;
			userSetCursor = Cursor.Current;
			virtualMode = false;

			horizontalScrollBar = new HScrollBar();
			horizontalScrollBar.Scroll += OnHScrollBarScroll;
			horizontalScrollBar.Visible = false;
			
			verticalScrollBar = new VScrollBar();
			verticalScrollBar.Scroll += OnVScrollBarScroll;
			verticalScrollBar.Visible = false;
			
			Controls.AddRange (new Control[] {horizontalScrollBar, verticalScrollBar});
		}
Esempio n. 5
0
		public void AutoResizeRowHeadersWidth (DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode)
		{
			if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader) {
				RowHeadersWidth = GetRowInternal (0).HeaderCell.PreferredSize.Width;
				return;
			}
			
			int new_width = 0;
			
			if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders) {
				foreach (DataGridViewRow row in Rows)
					if (row.Displayed)
						new_width = Math.Max (new_width, row.HeaderCell.PreferredSize.Width);
						
				if (RowHeadersWidth != new_width)
					RowHeadersWidth = new_width;
					
				return;
			}

			if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders) {
				foreach (DataGridViewRow row in Rows)
					new_width = Math.Max (new_width, row.HeaderCell.PreferredSize.Width);

				if (RowHeadersWidth != new_width)
					RowHeadersWidth = new_width;

				return;
			}
		}
        /// <include file='doc\DataGridView.uex' path='docs/doc[@for="DataGridView.AutoResizeRowHeadersWidth4"]/*' />
        protected void AutoResizeRowHeadersWidth(int rowIndex,
                                                 DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode,
                                                 bool fixedColumnHeadersHeight, 
                                                 bool fixedRowHeight)
        {
            if (rowIndex < -1 || rowIndex >= this.Rows.Count)
            {
                throw new ArgumentOutOfRangeException("rowIndex");
            }
            if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.EnableResizing ||
                rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.DisableResizing)
            {
                throw new ArgumentException(SR.GetString(SR.DataGridView_NeedAutoSizingCriteria, "rowHeadersWidthSizeMode"));
            }
            if (rowHeadersWidthSizeMode < DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders || rowHeadersWidthSizeMode > DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader) 
            {
                 throw new InvalidEnumArgumentException("rowHeadersWidthSizeMode", (int)rowHeadersWidthSizeMode, typeof(DataGridViewRowHeadersWidthSizeMode)); 
            }
           
            if (!this.RowHeadersVisible)
            {
                return;
            }
            if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader &&
                rowIndex != -1 &&
                rowIndex != this.Rows.GetFirstRow(DataGridViewElementStates.Visible))
            {
                return;
            }
            if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders &&
                rowIndex != -1)
            {
                DataGridViewElementStates rowState = this.Rows.GetRowState(rowIndex);
                bool rowDisplayed = (rowState & DataGridViewElementStates.Displayed) != 0;
                if (!rowDisplayed)
                {
                    return;
                }
            }

            if (!this.IsHandleCreated)
            {
                // auto sizing causes handle creation.
                // don't create the handle inside InitializeComponent because that causes problems w/ data binding
                this.dataGridViewState2[DATAGRIDVIEWSTATE2_autoSizedWithoutHandle] = true;
                return;
            }

            try
            {
                this.noAutoSizeCount++;
                // Use of WindowsFormsUtils.CreateMeasurementGraphics() avoid use of this.Handle
                // IntPtr handle = this.Handle; // Force creation of control's handle because for databound grids, handle creation wipes out and recreates the columns/rows.
                int preferredWidth = 0, rowIndexTmp;
                if (this.layout.TopLeftHeader.Width > 0)
                {
                    if (rowIndex != -1 || fixedColumnHeadersHeight)
                    {
                        preferredWidth = this.TopLeftHeaderCell.GetPreferredWidth(-1, this.layout.TopLeftHeader.Height);
                    }
                    else
                    {
                        preferredWidth = this.TopLeftHeaderCell.GetPreferredSize(-1).Width;
                    }
                }
                switch (rowHeadersWidthSizeMode)
                {
                    case DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader:
                    {
                        rowIndexTmp = this.Rows.GetFirstRow(DataGridViewElementStates.Visible);
                        if (rowIndexTmp != -1)
                        {
                            if (rowIndex != rowIndexTmp || fixedRowHeight)
                            {
                                preferredWidth = Math.Max(preferredWidth, this.Rows.SharedRow(rowIndexTmp).HeaderCell.GetPreferredWidth(rowIndexTmp, this.Rows.SharedRow(rowIndexTmp).GetHeight(rowIndexTmp)));
                            }
                            else
                            {
                                preferredWidth = Math.Max(preferredWidth, this.Rows.SharedRow(rowIndexTmp).HeaderCell.GetPreferredSize(rowIndexTmp).Width);
                            }
                        }
                        break;
                    }
                    case DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders:
                    {
                        int displayHeight = this.layout.Data.Height, cy = 0;
                        rowIndexTmp = this.Rows.GetFirstRow(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
                        while (rowIndexTmp != -1 && cy < displayHeight)
                        {
                            DataGridViewRow dataGridViewRow = this.Rows.SharedRow(rowIndexTmp);
                            int dataGridViewRowHeight = dataGridViewRow.GetHeight(rowIndexTmp);
                            cy += dataGridViewRowHeight;
                            if (rowIndex != rowIndexTmp || fixedRowHeight)
                            {
                                preferredWidth = Math.Max(preferredWidth, dataGridViewRow.HeaderCell.GetPreferredWidth(rowIndexTmp, dataGridViewRowHeight));
                            }
                            else
                            {
                                preferredWidth = Math.Max(preferredWidth, dataGridViewRow.HeaderCell.GetPreferredSize(rowIndexTmp).Width);
                            }
                            rowIndexTmp = this.Rows.GetNextRow(rowIndexTmp,
                                                            DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
                        }
                        if (cy < displayHeight)
                        {
                            rowIndexTmp = this.displayedBandsInfo.FirstDisplayedScrollingRow;
                            while (rowIndexTmp != -1 && cy < displayHeight)
                            {
                                DataGridViewRow dataGridViewRow = this.Rows.SharedRow(rowIndexTmp);
                                int dataGridViewRowHeight = dataGridViewRow.GetHeight(rowIndexTmp);
                                cy += dataGridViewRowHeight;
                                if (rowIndex != rowIndexTmp || fixedRowHeight)
                                {
                                    preferredWidth = Math.Max(preferredWidth, dataGridViewRow.HeaderCell.GetPreferredWidth(rowIndexTmp, dataGridViewRowHeight));
                                }
                                else
                                {
                                    preferredWidth = Math.Max(preferredWidth, dataGridViewRow.HeaderCell.GetPreferredSize(rowIndexTmp).Width);
                                }
                                rowIndexTmp = this.Rows.GetNextRow(rowIndexTmp, DataGridViewElementStates.Visible);
                            }
                        }
                        break;
                    }
                    case DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders:
                    {
                        for (rowIndexTmp = this.Rows.GetFirstRow(DataGridViewElementStates.Visible);
                            rowIndexTmp != -1;
                            rowIndexTmp = this.Rows.GetNextRow(rowIndexTmp, DataGridViewElementStates.Visible))
                        {
                            if (rowIndex != rowIndexTmp || fixedRowHeight)
                            {
                                preferredWidth = Math.Max(preferredWidth, this.Rows.SharedRow(rowIndexTmp).HeaderCell.GetPreferredWidth(rowIndexTmp, this.Rows.SharedRow(rowIndexTmp).GetHeight(rowIndexTmp)));
                            }
                            else
                            {
                                preferredWidth = Math.Max(preferredWidth, this.Rows.SharedRow(rowIndexTmp).HeaderCell.GetPreferredSize(rowIndexTmp).Width);
                            }
                        }
                        break;
                    }
                    default:
                    {
                        Debug.Fail("Unexpected rowHeadersWidthSizeMode value in AutoResizeRowHeadersWidth");
                        break;
                    }
                }
                if (preferredWidth < minimumRowHeadersWidth)
                {
                    preferredWidth = minimumRowHeadersWidth;
                }
                if (preferredWidth != this.RowHeadersWidth)
                {
                    this.RowHeadersWidthInternal = preferredWidth;
                }
            }
            finally
            {
                Debug.Assert(this.noAutoSizeCount > 0);
                this.noAutoSizeCount--;
            }
        }
 public static void Set_RowHeadersWidthSizeMode(this UpgradeHelpers.BasicViewModels.DataGridViewViewModel _DataGridView, DataGridViewRowHeadersWidthSizeMode RowHeadersWidthSizeMode)
 {
     throw new NotImplementedException("This is an automatic generated code, please implement the requested logic.");
 }
Esempio n. 8
0
		public void AutoResizeRowHeadersWidth (DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode)
		{
			if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader) {
				RowHeadersWidth = GetRowInternal (0).HeaderCell.PreferredSize.Width;
				return;
			}
			
			int new_width = 0;
			
			if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders) {
				bool anyRowsDisplayed = false;
				foreach(DataGridViewRow row in Rows)
					if(row.Displayed) {
						anyRowsDisplayed = true;
						new_width = Math.Max (new_width, row.HeaderCell.PreferredSize.Width);
					}
	
			        // if there are no rows which are displayed, we still have to set new_width
				// to a value >= 4 as RowHeadersWidth will throw an exception otherwise	
				if(!anyRowsDisplayed) {
					foreach (DataGridViewRow row in Rows)
							new_width = Math.Max (new_width, row.HeaderCell.PreferredSize.Width);
			        }		
				
				if (RowHeadersWidth != new_width)
					RowHeadersWidth = new_width;
					
				return;
			}

			if (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders) {
				foreach (DataGridViewRow row in Rows)
					new_width = Math.Max (new_width, row.HeaderCell.PreferredSize.Width);

				if (RowHeadersWidth != new_width)
					RowHeadersWidth = new_width;

				return;
			}
		}
 /// <include file='doc\DataGridView.uex' path='docs/doc[@for="DataGridView.AutoResizeRowHeadersWidth3"]/*' />
 public void AutoResizeRowHeadersWidth(int rowIndex, DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode)
 {
     AutoResizeRowHeadersWidth(rowIndex,
                               rowHeadersWidthSizeMode,
                               true /*fixedColumnHeadersHeight*/, 
                               true /*fixedRowHeight*/);
 }
 public void AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode);
 protected void AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode,
                                          bool fixedColumnHeadersHeight, bool fixedRowsHeight);
Esempio n. 12
0
 public void AutoResizeRowHeadersWidth(int rowIndex, DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode)
 {
 }
Esempio n. 13
0
 public void AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode)
 {
 }
        protected void AutoResizeRowHeadersWidth(int rowIndex, DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode, bool fixedColumnHeadersHeight, bool fixedRowHeight)
        {
            if ((rowIndex < -1) || (rowIndex >= this.Rows.Count))
            {
                throw new ArgumentOutOfRangeException("rowIndex");
            }
            if ((rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.EnableResizing) || (rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.DisableResizing))
            {
                throw new ArgumentException(System.Windows.Forms.SR.GetString("DataGridView_NeedAutoSizingCriteria", new object[] { "rowHeadersWidthSizeMode" }));
            }
            if ((rowHeadersWidthSizeMode < DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders) || (rowHeadersWidthSizeMode > DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader))
            {
                throw new InvalidEnumArgumentException("rowHeadersWidthSizeMode", (int) rowHeadersWidthSizeMode, typeof(DataGridViewRowHeadersWidthSizeMode));
            }
            if (this.RowHeadersVisible && ((((rowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader) || (rowIndex == -1)) || (rowIndex == this.Rows.GetFirstRow(DataGridViewElementStates.Visible))) && (((rowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders) || (rowIndex == -1)) || ((this.Rows.GetRowState(rowIndex) & DataGridViewElementStates.Displayed) != DataGridViewElementStates.None))))
            {
                if (!base.IsHandleCreated)
                {
                    this.dataGridViewState2[0x100000] = true;
                }
                else
                {
                    try
                    {
                        int nextRow;
                        int num3;
                        int num4;
                        DataGridViewRow row;
                        this.noAutoSizeCount++;
                        int preferredWidth = 0;
                        if (this.layout.TopLeftHeader.Width > 0)
                        {
                            if ((rowIndex != -1) || fixedColumnHeadersHeight)
                            {
                                preferredWidth = this.TopLeftHeaderCell.GetPreferredWidth(-1, this.layout.TopLeftHeader.Height);
                            }
                            else
                            {
                                preferredWidth = this.TopLeftHeaderCell.GetPreferredSize(-1).Width;
                            }
                        }
                        switch (rowHeadersWidthSizeMode)
                        {
                            case DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders:
                                nextRow = this.Rows.GetFirstRow(DataGridViewElementStates.Visible);
                                goto Label_036C;

                            case DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders:
                                num3 = this.layout.Data.Height;
                                num4 = 0;
                                nextRow = this.Rows.GetFirstRow(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
                                goto Label_024E;

                            case DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader:
                                nextRow = this.Rows.GetFirstRow(DataGridViewElementStates.Visible);
                                if (nextRow != -1)
                                {
                                    if ((rowIndex == nextRow) && !fixedRowHeight)
                                    {
                                        break;
                                    }
                                    preferredWidth = Math.Max(preferredWidth, this.Rows.SharedRow(nextRow).HeaderCell.GetPreferredWidth(nextRow, this.Rows.SharedRow(nextRow).GetHeight(nextRow)));
                                }
                                goto Label_0370;

                            default:
                                goto Label_0370;
                        }
                        preferredWidth = Math.Max(preferredWidth, this.Rows.SharedRow(nextRow).HeaderCell.GetPreferredSize(nextRow).Width);
                        goto Label_0370;
                    Label_01E3:
                        row = this.Rows.SharedRow(nextRow);
                        int height = row.GetHeight(nextRow);
                        num4 += height;
                        if ((rowIndex != nextRow) || fixedRowHeight)
                        {
                            preferredWidth = Math.Max(preferredWidth, row.HeaderCell.GetPreferredWidth(nextRow, height));
                        }
                        else
                        {
                            preferredWidth = Math.Max(preferredWidth, row.HeaderCell.GetPreferredSize(nextRow).Width);
                        }
                        nextRow = this.Rows.GetNextRow(nextRow, DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen);
                    Label_024E:
                        if ((nextRow != -1) && (num4 < num3))
                        {
                            goto Label_01E3;
                        }
                        if (num4 < num3)
                        {
                            nextRow = this.displayedBandsInfo.FirstDisplayedScrollingRow;
                            while ((nextRow != -1) && (num4 < num3))
                            {
                                DataGridViewRow row2 = this.Rows.SharedRow(nextRow);
                                int num6 = row2.GetHeight(nextRow);
                                num4 += num6;
                                if ((rowIndex != nextRow) || fixedRowHeight)
                                {
                                    preferredWidth = Math.Max(preferredWidth, row2.HeaderCell.GetPreferredWidth(nextRow, num6));
                                }
                                else
                                {
                                    preferredWidth = Math.Max(preferredWidth, row2.HeaderCell.GetPreferredSize(nextRow).Width);
                                }
                                nextRow = this.Rows.GetNextRow(nextRow, DataGridViewElementStates.Visible);
                            }
                        }
                        goto Label_0370;
                    Label_02FC:
                        if ((rowIndex != nextRow) || fixedRowHeight)
                        {
                            preferredWidth = Math.Max(preferredWidth, this.Rows.SharedRow(nextRow).HeaderCell.GetPreferredWidth(nextRow, this.Rows.SharedRow(nextRow).GetHeight(nextRow)));
                        }
                        else
                        {
                            preferredWidth = Math.Max(preferredWidth, this.Rows.SharedRow(nextRow).HeaderCell.GetPreferredSize(nextRow).Width);
                        }
                        nextRow = this.Rows.GetNextRow(nextRow, DataGridViewElementStates.Visible);
                    Label_036C:
                        if (nextRow != -1)
                        {
                            goto Label_02FC;
                        }
                    Label_0370:
                        if (preferredWidth < 4)
                        {
                            preferredWidth = 4;
                        }
                        if (preferredWidth != this.RowHeadersWidth)
                        {
                            this.RowHeadersWidthInternal = preferredWidth;
                        }
                    }
                    finally
                    {
                        this.noAutoSizeCount--;
                    }
                }
            }
        }
 public void AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode)
 {
     this.AutoResizeRowHeadersWidth(rowHeadersWidthSizeMode, true, true);
 }
 public DataGridView()
 {
     base.SetStyle(ControlStyles.UserMouse | ControlStyles.Opaque | ControlStyles.UserPaint, true);
     base.SetStyle(ControlStyles.SupportsTransparentBackColor, false);
     base.SetState2(0x800, true);
     this.dataGridViewState1 = new BitVector32(0);
     this.dataGridViewState2 = new BitVector32(0);
     this.dataGridViewOper = new BitVector32(0);
     this.dataGridViewState1[0x80001b] = true;
     this.dataGridViewState2[0x60003e7] = true;
     this.displayedBandsInfo = new DisplayedBandsData();
     this.lstRows = new ArrayList();
     this.converters = new Hashtable(8);
     this.pens = new Hashtable(8);
     this.brushes = new Hashtable(10);
     this.gridPen = new Pen(DefaultGridColor);
     this.selectedBandIndexes = new DataGridViewIntLinkedList();
     this.individualSelectedCells = new DataGridViewCellLinkedList();
     this.individualReadOnlyCells = new DataGridViewCellLinkedList();
     this.advancedCellBorderStyle = new DataGridViewAdvancedBorderStyle(this, DataGridViewAdvancedCellBorderStyle.OutsetDouble, DataGridViewAdvancedCellBorderStyle.OutsetPartial, DataGridViewAdvancedCellBorderStyle.InsetDouble);
     this.advancedRowHeadersBorderStyle = new DataGridViewAdvancedBorderStyle(this);
     this.advancedColumnHeadersBorderStyle = new DataGridViewAdvancedBorderStyle(this);
     this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
     this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.OutsetPartial;
     this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.OutsetPartial;
     this.borderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
     this.dataGridViewState1[0x80] = true;
     this.selectionMode = DataGridViewSelectionMode.RowHeaderSelect;
     this.editMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
     this.autoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
     this.autoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
     this.columnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
     this.rowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;
     this.clipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithAutoHeaderText;
     this.layout = new LayoutData();
     this.layout.TopLeftHeader = Rectangle.Empty;
     this.layout.ColumnHeaders = Rectangle.Empty;
     this.layout.RowHeaders = Rectangle.Empty;
     this.layout.ColumnHeadersVisible = true;
     this.layout.RowHeadersVisible = true;
     this.layout.ClientRectangle = base.ClientRectangle;
     this.scrollBars = System.Windows.Forms.ScrollBars.Both;
     this.horizScrollBar.RightToLeft = RightToLeft.Inherit;
     this.horizScrollBar.AccessibleName = System.Windows.Forms.SR.GetString("DataGridView_AccHorizontalScrollBarAccName");
     this.horizScrollBar.Top = base.ClientRectangle.Height - this.horizScrollBar.Height;
     this.horizScrollBar.Left = 0;
     this.horizScrollBar.Visible = false;
     this.horizScrollBar.Scroll += new ScrollEventHandler(this.DataGridViewHScrolled);
     base.Controls.Add(this.horizScrollBar);
     this.vertScrollBar.Top = 0;
     this.vertScrollBar.AccessibleName = System.Windows.Forms.SR.GetString("DataGridView_AccVerticalScrollBarAccName");
     this.vertScrollBar.Left = base.ClientRectangle.Width - this.vertScrollBar.Width;
     this.vertScrollBar.Visible = false;
     this.vertScrollBar.Scroll += new ScrollEventHandler(this.DataGridViewVScrolled);
     base.Controls.Add(this.vertScrollBar);
     this.ptCurrentCell = new Point(-1, -1);
     this.ptAnchorCell = new Point(-1, -1);
     this.ptMouseDownCell = new Point(-2, -2);
     this.ptMouseEnteredCell = new Point(-2, -2);
     this.ptToolTipCell = new Point(-1, -1);
     this.ptMouseDownGridCoord = new Point(-1, -1);
     this.sortOrder = System.Windows.Forms.SortOrder.None;
     this.lastMouseClickInfo.timeStamp = 0L;
     this.WireScrollBarsEvents();
     base.PerformLayout();
     this.toolTipControl = new DataGridViewToolTip(this);
     base.Invalidate();
 }