Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / WinForms / Managed / System / WinForms / DataGridView.cs / 1 / DataGridView.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System.Text; using System.Runtime.InteropServices; using System.Runtime.Remoting; using System.ComponentModel; using System; using System.Diagnostics.CodeAnalysis; using System.Security; using System.Security.Permissions; using System.Collections; using System.Windows.Forms; using System.Windows.Forms.Design; using System.ComponentModel.Design; using System.Drawing; using System.Windows.Forms.ComponentModel; using System.Windows.Forms.Layout; using System.Globalization; using System.Diagnostics; using System.Windows.Forms.VisualStyles; using Microsoft.Win32; using System.Collections.Specialized; ///[ ComVisible(true), ClassInterface(ClassInterfaceType.AutoDispatch), Designer("System.Windows.Forms.Design.DataGridViewDesigner, " + AssemblyRef.SystemDesign), //DefaultProperty("DataSource"), DefaultEvent("CellContentClick"), ComplexBindingProperties("DataSource", "DataMember"), Docking(DockingBehavior.Ask), Editor("System.Windows.Forms.Design.DataGridViewComponentEditor, " + AssemblyRef.SystemDesign, typeof(ComponentEditor)), SRDescription(SR.DescriptionDataGridView) ] public partial class DataGridView : Control, ISupportInitialize { private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTOADDROWSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTODELETEROWSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTOORDERCOLUMNSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTORESIZECOLUMNSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTORESIZEROWSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALTERNATINGROWSDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWAUTOGENERATECOLUMNSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWAUTOSIZECOLUMNMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWAUTOSIZECOLUMNSMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWAUTOSIZEROWSMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWBACKGROUNDCOLORCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWBORDERSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCANCELROWEDIT = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLBEGINEDIT = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLBORDERSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCONTENTCLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCONTENTDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLENDEDIT = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLENTER = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLERRORTEXTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLERRORTEXTNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLFORMATTING = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLLEAVE = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEDOWN = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEENTER = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSELEAVE = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEMOVE = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEUP = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLPAINTING = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLPARSING = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLSTATECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLSTYLECONTENTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALIDATING = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALIDATED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALUECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALUENEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALUEPUSHED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNADDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNCONTEXTMENUSTRIPCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDATAPROPERTYNAMECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDISPLAYINDEXCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDIVIDERWIDTHCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERCELLCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDIVIDERDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSEDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERSBORDERSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERSDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTSIZEMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNMINIMUMWIDTHCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNNAMECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNREMOVED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNSORTMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNSTATECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNTOOLTIPTEXTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNWIDTHCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCURRENTCELLCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCURRENTCELLDIRTYSTATECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWDATABINDINGCOMPLETE = new object(); private static readonly object EVENT_DATAGRIDVIEWDATAERROR = new object(); private static readonly object EVENT_DATAGRIDVIEWDATAMEMBERCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWDATASOURCECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWDEFAULTVALUESNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWEDITINGCONTROLSHOWING = new object(); private static readonly object EVENT_DATAGRIDVIEWEDITMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWGRIDCOLORCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWMULTISELECTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWNEWROWNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWREADONLYCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWDIRTYSTATENEEDED = new Object(); private static readonly object EVENT_DATAGRIDVIEWROWDIVIDERHEIGHTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWENTER = new object(); private static readonly object EVENT_DATAGRIDVIEWROWERRORTEXTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWERRORTEXTNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERCELLCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWDIVIDERDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERMOUSECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERMOUSEDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERSBORDERSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERSDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERSWIDTHCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERSWIDTHSIZEMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEIGHTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEIGHTINFONEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEIGHTINFOPUSHED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWLEAVE = new object(); private static readonly object EVENT_DATAGRIDVIEWROWMINIMUMHEIGHTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWPOSTPAINT = new object(); private static readonly object EVENT_DATAGRIDVIEWROWPREPAINT = new object(); private static readonly object EVENT_DATAGRIDVIEWROWSADDED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWSDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWSREMOVED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWSTATECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWUNSHARED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWVALIDATED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWVALIDATING = new object(); private static readonly object EVENT_DATAGRIDVIEWSCROLL = new object(); private static readonly object EVENT_DATAGRIDVIEWSELECTIONCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWSORTCOMPARE = new object(); private static readonly object EVENT_DATAGRIDVIEWSORTED = new object(); private static readonly object EVENT_DATAGRIDVIEWUSERADDEDROW = new object(); private static readonly object EVENT_DATAGRIDVIEWUSERDELETEDROW = new object(); private static readonly object EVENT_DATAGRIDVIEWUSERDELETINGROW = new object(); private const int DATAGRIDVIEWSTATE1_allowUserToAddRows = 0x00000001; private const int DATAGRIDVIEWSTATE1_allowUserToDeleteRows = 0x00000002; private const int DATAGRIDVIEWSTATE1_allowUserToOrderColumns = 0x00000004; private const int DATAGRIDVIEWSTATE1_columnHeadersVisible = 0x00000008; private const int DATAGRIDVIEWSTATE1_rowHeadersVisible = 0x00000010; private const int DATAGRIDVIEWSTATE1_forwardCharMessage = 0x00000020; private const int DATAGRIDVIEWSTATE1_leavingWithTabKey = 0x00000040; private const int DATAGRIDVIEWSTATE1_multiSelect = 0x00000080; private const int DATAGRIDVIEWSTATE1_ignoringEditingChanges = 0x00000200; private const int DATAGRIDVIEWSTATE1_ambientForeColor = 0x00000400; private const int DATAGRIDVIEWSTATE1_scrolledSinceMouseDown = 0x00000800; private const int DATAGRIDVIEWSTATE1_editingControlHidden = 0x00001000; private const int DATAGRIDVIEWSTATE1_standardTab = 0x00002000; private const int DATAGRIDVIEWSTATE1_editingControlChanging = 0x00004000; private const int DATAGRIDVIEWSTATE1_currentCellInEditMode = 0x00008000; private const int DATAGRIDVIEWSTATE1_virtualMode = 0x00010000; private const int DATAGRIDVIEWSTATE1_editedCellChanged = 0x00020000; private const int DATAGRIDVIEWSTATE1_editedRowChanged = 0x00040000; private const int DATAGRIDVIEWSTATE1_newRowEdited = 0x00080000; private const int DATAGRIDVIEWSTATE1_readOnly = 0x00100000; private const int DATAGRIDVIEWSTATE1_newRowCreatedByEditing = 0x00200000; private const int DATAGRIDVIEWSTATE1_temporarilyResetCurrentCell = 0x00400000; private const int DATAGRIDVIEWSTATE1_autoGenerateColumns = 0x00800000; private const int DATAGRIDVIEWSTATE1_customCursorSet = 0x01000000; private const int DATAGRIDVIEWSTATE1_ambientFont = 0x02000000; private const int DATAGRIDVIEWSTATE1_ambientColumnHeadersFont = 0x04000000; private const int DATAGRIDVIEWSTATE1_ambientRowHeadersFont = 0x08000000; private const int DATAGRIDVIEWSTATE1_isRestrictedChecked = 0x10000000; private const int DATAGRIDVIEWSTATE1_isRestricted = 0x20000000; private const int DATAGRIDVIEWSTATE1_isAutoSized = 0x40000000; // DATAGRIDVIEWSTATE2_ private const int DATAGRIDVIEWSTATE2_showEditingIcon = 0x00000001; private const int DATAGRIDVIEWSTATE2_allowUserToResizeColumns = 0x00000002; private const int DATAGRIDVIEWSTATE2_allowUserToResizeRows = 0x00000004; private const int DATAGRIDVIEWSTATE2_mouseOverRemovedEditingCtrl = 0x00000008; private const int DATAGRIDVIEWSTATE2_mouseOverRemovedEditingPanel = 0x00000010; private const int DATAGRIDVIEWSTATE2_mouseEnterExpected = 0x00000020; private const int DATAGRIDVIEWSTATE2_enableHeadersVisualStyles = 0x00000040; private const int DATAGRIDVIEWSTATE2_showCellErrors = 0x00000080; private const int DATAGRIDVIEWSTATE2_showCellToolTips = 0x00000100; private const int DATAGRIDVIEWSTATE2_showRowErrors = 0x00000200; private const int DATAGRIDVIEWSTATE2_showColumnRelocationInsertion = 0x00000400; private const int DATAGRIDVIEWSTATE2_rightToLeftMode = 0x00000800; private const int DATAGRIDVIEWSTATE2_rightToLeftValid = 0x00001000; private const int DATAGRIDVIEWSTATE2_currentCellWantsInputKey = 0x00002000; private const int DATAGRIDVIEWSTATE2_stopRaisingVerticalScroll = 0x00004000; private const int DATAGRIDVIEWSTATE2_stopRaisingHorizontalScroll = 0x00008000; private const int DATAGRIDVIEWSTATE2_replacedCellSelected = 0x00010000; private const int DATAGRIDVIEWSTATE2_replacedCellReadOnly = 0x00020000; private const int DATAGRIDVIEWSTATE2_raiseSelectionChanged = 0x00040000; private const int DATAGRIDVIEWSTATE2_initializing = 0x00080000; private const int DATAGRIDVIEWSTATE2_autoSizedWithoutHandle = 0x00100000; private const int DATAGRIDVIEWSTATE2_ignoreCursorChange = 0x00200000; private const int DATAGRIDVIEWSTATE2_rowsCollectionClearedInSetCell= 0x00400000; private const int DATAGRIDVIEWSTATE2_nextMouseUpIsDouble = 0x00800000; private const int DATAGRIDVIEWSTATE2_inBindingContextChanged = 0x01000000; private const int DATAGRIDVIEWSTATE2_allowHorizontalScrollbar = 0x02000000; private const int DATAGRIDVIEWSTATE2_usedFillWeightsDirty = 0x04000000; private const int DATAGRIDVIEWSTATE2_messageFromEditingCtrls = 0x08000000; private const int DATAGRIDVIEWSTATE2_cellMouseDownInContentBounds = 0x10000000; private const int DATAGRIDVIEWSTATE2_discardEditingControl = 0x20000000; // DATAGRIDVIEWOPER_ private const int DATAGRIDVIEWOPER_trackColResize = 0x00000001; private const int DATAGRIDVIEWOPER_trackRowResize = 0x00000002; private const int DATAGRIDVIEWOPER_trackColSelect = 0x00000004; private const int DATAGRIDVIEWOPER_trackRowSelect = 0x00000008; private const int DATAGRIDVIEWOPER_trackCellSelect = 0x00000010; private const int DATAGRIDVIEWOPER_trackColRelocation = 0x00000020; private const int DATAGRIDVIEWOPER_inSort = 0x00000040; private const int DATAGRIDVIEWOPER_trackColHeadersResize = 0x00000080; private const int DATAGRIDVIEWOPER_trackRowHeadersResize = 0x00000100; private const int DATAGRIDVIEWOPER_trackMouseMoves = 0x00000200; private const int DATAGRIDVIEWOPER_inRefreshColumns = 0x00000400; private const int DATAGRIDVIEWOPER_inDisplayIndexAdjustments = 0x00000800; private const int DATAGRIDVIEWOPER_lastEditCtrlClickDoubled = 0x00001000; private const int DATAGRIDVIEWOPER_inMouseDown = 0x00002000; private const int DATAGRIDVIEWOPER_inReadOnlyChange = 0x00004000; private const int DATAGRIDVIEWOPER_inCellValidating = 0x00008000; private const int DATAGRIDVIEWOPER_inBorderStyleChange = 0x00010000; private const int DATAGRIDVIEWOPER_inCurrentCellChange = 0x00020000; private const int DATAGRIDVIEWOPER_inAdjustFillingColumns = 0x00040000; private const int DATAGRIDVIEWOPER_inAdjustFillingColumn = 0x00080000; private const int DATAGRIDVIEWOPER_inDispose = 0x00100000; private const int DATAGRIDVIEWOPER_inBeginEdit = 0x00200000; private const int DATAGRIDVIEWOPER_inEndEdit = 0x00400000; private const int DATAGRIDVIEWOPER_resizingOperationAboutToStart = 0x00800000; private static Size DragSize = SystemInformation.DragSize; private const byte DATAGRIDVIEW_columnSizingHotZone = 6; private const byte DATAGRIDVIEW_rowSizingHotZone = 5; private const byte DATAGRIDVIEW_insertionBarWidth = 3; private const byte DATAGRIDVIEW_bulkPaintThreshold = 8; private const string DATAGRIDVIEW_htmlPrefix = "Version:1.0\r\nStartHTML:00000097\r\nEndHTML:{0}\r\nStartFragment:00000133\r\nEndFragment:{1}\r\n"; private const string DATAGRIDVIEW_htmlStartFragment = "\r\n\r\n"; private const string DATAGRIDVIEW_htmlEndFragment = "\r\n\r\n\r\n"; private System.Collections.Specialized.BitVector32 dataGridViewState1; // see DATAGRIDVIEWSTATE1_ consts above private System.Collections.Specialized.BitVector32 dataGridViewState2; // see DATAGRIDVIEWSTATE2_ consts above private System.Collections.Specialized.BitVector32 dataGridViewOper; // see DATAGRIDVIEWOPER_ consts above private const BorderStyle defaultBorderStyle = BorderStyle.FixedSingle; private const DataGridViewAdvancedCellBorderStyle defaultAdvancedCellBorderStyle = DataGridViewAdvancedCellBorderStyle.Single; private const DataGridViewAdvancedCellBorderStyle defaultAdvancedRowHeadersBorderStyle = DataGridViewAdvancedCellBorderStyle.OutsetPartial; private const DataGridViewAdvancedCellBorderStyle defaultAdvancedColumnHeadersBorderStyle = DataGridViewAdvancedCellBorderStyle.OutsetPartial; private const DataGridViewSelectionMode defaultSelectionMode = DataGridViewSelectionMode.RowHeaderSelect; private const DataGridViewEditMode defaultEditMode = DataGridViewEditMode.EditOnKeystrokeOrF2; private const DataGridViewAutoSizeRowCriteriaInternal invalidDataGridViewAutoSizeRowCriteriaInternalMask = ~(DataGridViewAutoSizeRowCriteriaInternal.Header | DataGridViewAutoSizeRowCriteriaInternal.AllColumns); private SolidBrush backgroundBrush = DefaultBackgroundBrush; private Pen gridPen; private Cursor oldCursor; private Graphics cachedGraphics; private HScrollBar horizScrollBar = new HScrollBar(); private VScrollBar vertScrollBar = new VScrollBar(); private DataGridViewHeaderCell topLeftHeaderCell; private DataGridViewRow rowTemplate; private DataGridViewRowCollection dataGridViewRows; private DataGridViewColumnCollection dataGridViewColumns; private DataGridViewCellStyle placeholderCellStyle; private StringFormat placeholderStringFormat; private DataGridViewColumn sortedColumn; private SortOrder sortOrder; private object uneditedFormattedValue; private Control editingControl, latestEditingControl, cachedEditingControl; private Panel editingPanel; private Point ptCurrentCell, ptCurrentCellCache = Point.Empty, ptAnchorCell, ptMouseDownCell, ptMouseEnteredCell, ptToolTipCell, ptMouseDownGridCoord; private DataGridViewSelectionMode selectionMode; private DataGridViewEditMode editMode; // Note that a cell can only be in one bag but not both at the same time. private DataGridViewCellLinkedList individualSelectedCells; private DataGridViewCellLinkedList individualReadOnlyCells; private DataGridViewIntLinkedList selectedBandIndexes; private DataGridViewIntLinkedList selectedBandSnapshotIndexes; private DataGridViewCellStyle defaultCellStyle, columnHeadersDefaultCellStyle, rowHeadersDefaultCellStyle; private DataGridViewCellStyle rowsDefaultCellStyle, alternatingRowsDefaultCellStyle; private ScrollBars scrollBars; private LayoutData layout; private DisplayedBandsData displayedBandsInfo; private Rectangle normalClientRectangle; private ArrayList lstRows; private int availableWidthForFillColumns; private BorderStyle borderStyle; private DataGridViewAdvancedBorderStyle advancedCellBorderStyle; private DataGridViewAdvancedBorderStyle advancedRowHeadersBorderStyle; private DataGridViewAdvancedBorderStyle advancedColumnHeadersBorderStyle; private DataGridViewClipboardCopyMode clipboardCopyMode; private const int minimumRowHeadersWidth = 4; private const int minimumColumnHeadersHeight = 4; private const int defaultRowHeadersWidth = 41; private const int maxHeadersThickness = 32768; private const int upperSize = 0x007FFFFF; private int rowHeadersWidth = defaultRowHeadersWidth; private int cachedRowHeadersWidth; private const int defaultColumnHeadersHeight = 23; private int columnHeadersHeight = defaultColumnHeadersHeight; private int cachedColumnHeadersHeight; private DataGridViewAutoSizeRowsMode autoSizeRowsMode; private DataGridViewAutoSizeColumnsMode autoSizeColumnsMode; private DataGridViewColumnHeadersHeightSizeMode columnHeadersHeightSizeMode; private DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode; private DataGridViewCellStyleChangedEventArgs dgvcsce; private DataGridViewCellPaintingEventArgs dgvcpe; private DataGridViewCellValueEventArgs dgvcve; private DataGridViewRowHeightInfoNeededEventArgs dgvrhine; private DataGridViewRowPostPaintEventArgs dgvrpope; private DataGridViewRowPrePaintEventArgs dgvrprpe; // the sum of the widths in pixels of the scrolling columns preceding // the first visible scrolling column private int horizontalOffset; // the sum of the heights in pixels of the scrolling rows preceding // the first visible scrolling row private int verticalOffset; // the number of pixels of the firstDisplayedScrollingCol which are not visible private int negOffset; // the index of the potential 'new' row. -1 if there is no 'new' row. private int newRowIndex = -1; // residual fraction of WHEEL_DELTA (120) for wheel scrolling private int cumulativeVerticalWheelDelta; private int cumulativeHorizontalWheelDelta; private int trackColAnchor; private int trackColumn = -1; private int trackColumnEdge = -1; private int trackRowAnchor; private int trackRow = -1; private int trackRowEdge = -1; private int lastHeaderShadow = -1; private int currentColSplitBar = -1, lastColSplitBar = -1; private int currentRowSplitBar = -1, lastRowSplitBar = -1; private int mouseBarOffset; private int noDimensionChangeCount; private int noSelectionChangeCount; private int noAutoSizeCount; private int inBulkPaintCount; private int inBulkLayoutCount; private int inPerformLayoutCount; private System.Windows.Forms.Timer vertScrollTimer, horizScrollTimer; private Hashtable converters; private Hashtable pens; private Hashtable brushes; private NativeMethods.RECT[] cachedScrollableRegion; // DataBinding private DataGridViewDataConnection dataConnection; // ToolTip private DataGridViewToolTip toolTipControl; // the tool tip string we get from cells private string toolTipCaption = String.Empty; private const int maxTTDISPINFOBufferLength = 80; // Last Mouse Click Info private MouseClickInfo lastMouseClickInfo; #if DEBUG // set to false when the grid is not in [....] with the underlying data store // in virtual mode, and OnCellValueNeeded cannot be called. internal bool dataStoreAccessAllowed = true; #endif /// /// /// 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(); } ///Initializes a new instance of the ///class. [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public virtual DataGridViewAdvancedBorderStyle AdjustedTopLeftHeaderBorderStyle { get { DataGridViewAdvancedBorderStyle dgvabs; if (this.ApplyVisualStylesToHeaderCells) { switch (this.AdvancedColumnHeadersBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.OutsetDouble: case DataGridViewAdvancedCellBorderStyle.OutsetPartial: dgvabs = new DataGridViewAdvancedBorderStyle(); if (this.RightToLeftInternal) { dgvabs.LeftInternal = DataGridViewAdvancedCellBorderStyle.Outset; } else { dgvabs.LeftInternal = DataGridViewAdvancedCellBorderStyle.OutsetDouble; } dgvabs.RightInternal = DataGridViewAdvancedCellBorderStyle.Outset; dgvabs.TopInternal = DataGridViewAdvancedCellBorderStyle.OutsetDouble; dgvabs.BottomInternal = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewAdvancedCellBorderStyle.InsetDouble: dgvabs = new DataGridViewAdvancedBorderStyle(); if (this.RightToLeftInternal) { dgvabs.LeftInternal = DataGridViewAdvancedCellBorderStyle.Inset; } else { dgvabs.LeftInternal = DataGridViewAdvancedCellBorderStyle.InsetDouble; } dgvabs.RightInternal = DataGridViewAdvancedCellBorderStyle.Inset; dgvabs.TopInternal = DataGridViewAdvancedCellBorderStyle.InsetDouble; dgvabs.BottomInternal = DataGridViewAdvancedCellBorderStyle.Inset; break; case DataGridViewAdvancedCellBorderStyle.NotSet: // Since the row headers are visible, we should make sure // that there is a left/right border for the TopLeftHeaderCell no matter what. if ((!this.RightToLeftInternal && this.AdvancedColumnHeadersBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.None) || (this.RightToLeftInternal && this.AdvancedColumnHeadersBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.None)) { dgvabs = new DataGridViewAdvancedBorderStyle(); if (this.RightToLeftInternal) { dgvabs.LeftInternal = this.AdvancedColumnHeadersBorderStyle.Left; dgvabs.RightInternal = this.AdvancedRowHeadersBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.OutsetDouble ? DataGridViewAdvancedCellBorderStyle.Outset : this.AdvancedRowHeadersBorderStyle.Right; } else { dgvabs.LeftInternal = this.AdvancedRowHeadersBorderStyle.Left; dgvabs.RightInternal = this.AdvancedColumnHeadersBorderStyle.Right; } dgvabs.TopInternal = this.AdvancedColumnHeadersBorderStyle.Top; dgvabs.BottomInternal = this.AdvancedColumnHeadersBorderStyle.Bottom; } else { dgvabs = this.AdvancedColumnHeadersBorderStyle; } break; default: dgvabs = this.AdvancedColumnHeadersBorderStyle; break; } } else { switch (this.AdvancedColumnHeadersBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.OutsetDouble: case DataGridViewAdvancedCellBorderStyle.OutsetPartial: dgvabs = new DataGridViewAdvancedBorderStyle(); dgvabs.LeftInternal = this.RightToLeftInternal ? DataGridViewAdvancedCellBorderStyle.Outset : DataGridViewAdvancedCellBorderStyle.OutsetDouble; dgvabs.RightInternal = this.RightToLeftInternal ? DataGridViewAdvancedCellBorderStyle.OutsetDouble : DataGridViewAdvancedCellBorderStyle.Outset; dgvabs.TopInternal = DataGridViewAdvancedCellBorderStyle.OutsetDouble; dgvabs.BottomInternal = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewAdvancedCellBorderStyle.InsetDouble: dgvabs = new DataGridViewAdvancedBorderStyle(); dgvabs.LeftInternal = this.RightToLeftInternal ? DataGridViewAdvancedCellBorderStyle.Inset : DataGridViewAdvancedCellBorderStyle.InsetDouble; dgvabs.RightInternal = this.RightToLeftInternal ? DataGridViewAdvancedCellBorderStyle.InsetDouble : DataGridViewAdvancedCellBorderStyle.Inset; dgvabs.TopInternal = DataGridViewAdvancedCellBorderStyle.InsetDouble; dgvabs.BottomInternal = DataGridViewAdvancedCellBorderStyle.Inset; break; case DataGridViewAdvancedCellBorderStyle.NotSet: // Since the row headers are visible, we should make sure // that there is a left/right border for the TopLeftHeaderCell no matter what. if ((!this.RightToLeftInternal && this.AdvancedColumnHeadersBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.None) || (this.RightToLeftInternal && this.AdvancedColumnHeadersBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.None)) { dgvabs = new DataGridViewAdvancedBorderStyle(); if (this.RightToLeftInternal) { dgvabs.LeftInternal = this.AdvancedColumnHeadersBorderStyle.Left; dgvabs.RightInternal = this.AdvancedRowHeadersBorderStyle.Right; } else { dgvabs.LeftInternal = this.AdvancedRowHeadersBorderStyle.Left; dgvabs.RightInternal = this.AdvancedColumnHeadersBorderStyle.Right; } dgvabs.TopInternal = this.AdvancedColumnHeadersBorderStyle.Top; dgvabs.BottomInternal = this.AdvancedColumnHeadersBorderStyle.Bottom; } else { dgvabs = this.AdvancedColumnHeadersBorderStyle; } break; default: dgvabs = this.AdvancedColumnHeadersBorderStyle; break; } } return dgvabs; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public DataGridViewAdvancedBorderStyle AdvancedCellBorderStyle { get { return this.advancedCellBorderStyle; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public DataGridViewAdvancedBorderStyle AdvancedColumnHeadersBorderStyle { get { return this.advancedColumnHeadersBorderStyle; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public DataGridViewAdvancedBorderStyle AdvancedRowHeadersBorderStyle { get { return this.advancedRowHeadersBorderStyle; } } /// [ DefaultValue(true), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToAddRowsDescr) ] public bool AllowUserToAddRows { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToAddRows]; } set { if (this.AllowUserToAddRows != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToAddRows] = value; if (this.DataSource != null) { this.dataConnection.ResetCachedAllowUserToAddRowsInternal(); } OnAllowUserToAddRowsChanged(EventArgs.Empty); } } } internal bool AllowUserToAddRowsInternal { get { if (this.DataSource == null) { return this.AllowUserToAddRows; } else { return this.AllowUserToAddRows && this.dataConnection.AllowAdd; } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToAddRowsChangedDescr) ] public event EventHandler AllowUserToAddRowsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTOADDROWSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTOADDROWSCHANGED, value); } } /// [ DefaultValue(true), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToDeleteRowsDescr) ] public bool AllowUserToDeleteRows { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToDeleteRows]; } set { if (this.AllowUserToDeleteRows != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToDeleteRows] = value; OnAllowUserToDeleteRowsChanged(EventArgs.Empty); } } } internal bool AllowUserToDeleteRowsInternal { get { if (this.DataSource == null) { return this.AllowUserToDeleteRows; } else { return this.AllowUserToDeleteRows && this.dataConnection.AllowRemove; } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToDeleteRowsChangedDescr) ] public event EventHandler AllowUserToDeleteRowsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTODELETEROWSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTODELETEROWSCHANGED, value); } } /// [ DefaultValue(false), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToOrderColumnsDescr) ] public bool AllowUserToOrderColumns { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToOrderColumns]; } set { if (this.AllowUserToOrderColumns != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToOrderColumns] = value; OnAllowUserToOrderColumnsChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToOrderColumnsChangedDescr) ] public event EventHandler AllowUserToOrderColumnsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTOORDERCOLUMNSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTOORDERCOLUMNSCHANGED, value); } } /// /// /// [ DefaultValue(true), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToResizeColumnsDescr) ] public bool AllowUserToResizeColumns { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_allowUserToResizeColumns]; } set { if (this.AllowUserToResizeColumns != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_allowUserToResizeColumns] = value; OnAllowUserToResizeColumnsChanged(EventArgs.Empty); } } } ////// Gets or sets a global value indicating if the dataGridView's columns are resizable with the mouse. /// The resizable aspect of a column can be overridden by DataGridViewColumn.Resizable. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToResizeColumnsChangedDescr) ] public event EventHandler AllowUserToResizeColumnsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTORESIZECOLUMNSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTORESIZECOLUMNSCHANGED, value); } } /// /// /// [ DefaultValue(true), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToResizeRowsDescr) ] public bool AllowUserToResizeRows { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_allowUserToResizeRows]; } set { if (this.AllowUserToResizeRows != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_allowUserToResizeRows] = value; OnAllowUserToResizeRowsChanged(EventArgs.Empty); } } } ////// Gets or sets a global value indicating if the dataGridView's rows are resizable with the mouse. /// The resizable aspect of a row can be overridden by DataGridViewRow.Resizable. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToResizeRowsChangedDescr) ] public event EventHandler AllowUserToResizeRowsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTORESIZEROWSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTORESIZEROWSCHANGED, value); } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_AlternatingRowsDefaultCellStyleDescr) ] public DataGridViewCellStyle AlternatingRowsDefaultCellStyle { get { if (this.alternatingRowsDefaultCellStyle == null) { this.alternatingRowsDefaultCellStyle = new DataGridViewCellStyle(); this.alternatingRowsDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.AlternatingRows); } return this.alternatingRowsDefaultCellStyle; } set { DataGridViewCellStyle cs = this.AlternatingRowsDefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.AlternatingRows); this.alternatingRowsDefaultCellStyle = value; if (value != null) { this.alternatingRowsDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.AlternatingRows); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.AlternatingRowsDefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnAlternatingRowsDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewAlternatingRowsDefaultCellStyleChangedDescr) ] public event EventHandler AlternatingRowsDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALTERNATINGROWSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALTERNATINGROWSDEFAULTCELLSTYLECHANGED, value); } } internal bool ApplyVisualStylesToInnerCells { get { return Application.RenderWithVisualStyles; } } internal bool ApplyVisualStylesToHeaderCells { get { return Application.RenderWithVisualStyles && this.EnableHeadersVisualStyles; } } /// /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced), DefaultValue(true) ] public bool AutoGenerateColumns { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_autoGenerateColumns]; } set{ if (this.dataGridViewState1[DATAGRIDVIEWSTATE1_autoGenerateColumns] != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_autoGenerateColumns] = value; OnAutoGenerateColumnsChanged(EventArgs.Empty); } } } ////// ///[ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public event EventHandler AutoGenerateColumnsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWAUTOGENERATECOLUMNSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWAUTOGENERATECOLUMNSCHANGED, value); } } /// /// /// public override bool AutoSize { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_isAutoSized]; } set { base.AutoSize = value; this.dataGridViewState1[DATAGRIDVIEWSTATE1_isAutoSized] = value; } } ///Overriding base implementation for perf gains. ////// /// [ DefaultValue(DataGridViewAutoSizeColumnsMode.None), SRCategory(SR.CatLayout), SRDescription(SR.DataGridView_AutoSizeColumnsModeDescr) ] public DataGridViewAutoSizeColumnsMode AutoSizeColumnsMode { get { return this.autoSizeColumnsMode; } set { switch (value) { case DataGridViewAutoSizeColumnsMode.None: case DataGridViewAutoSizeColumnsMode.ColumnHeader: case DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader: case DataGridViewAutoSizeColumnsMode.AllCells: case DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader: case DataGridViewAutoSizeColumnsMode.DisplayedCells: case DataGridViewAutoSizeColumnsMode.Fill: break; default: throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewAutoSizeColumnsMode)); } if (this.autoSizeColumnsMode != value) { foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.AutoSizeMode == DataGridViewAutoSizeColumnMode.NotSet && dataGridViewColumn.Visible) { // Make sure there is no visible column which would have an inherited autosize mode based on the header only. if (value == DataGridViewAutoSizeColumnsMode.ColumnHeader && !this.ColumnHeadersVisible) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotAutoSizeColumnsInvisibleColumnHeaders)); } // Make sure there is no visible frozen column which would have a Fill inherited autosize mode. if (value == DataGridViewAutoSizeColumnsMode.Fill && dataGridViewColumn.Frozen) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotAutoFillFrozenColumns)); } } } DataGridViewAutoSizeColumnMode[] previousModes = new DataGridViewAutoSizeColumnMode[this.Columns.Count]; foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { /*DataGridViewAutoSizeColumnMode previousInheritedMode = dataGridViewColumn.InheritedAutoSizeMode; bool previousInheritedModeAutoSized = previousInheritedMode != DataGridViewAutoSizeColumnMode.Fill && previousInheritedMode != DataGridViewAutoSizeColumnMode.None && previousInheritedMode != DataGridViewAutoSizeColumnMode.NotSet;*/ previousModes[dataGridViewColumn.Index] = dataGridViewColumn.InheritedAutoSizeMode; } DataGridViewAutoSizeColumnsModeEventArgs dgvcasme = new DataGridViewAutoSizeColumnsModeEventArgs(previousModes); this.autoSizeColumnsMode = value; OnAutoSizeColumnsModeChanged(dgvcasme); } } } ///Gets or sets the columns' autosizing mode. Standard inheritance model is used: /// Columns with AutoSizeMode property set to NotSet will use this auto size mode. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewAutoSizeColumnsModeChangedDescr) ] public event DataGridViewAutoSizeColumnsModeEventHandler AutoSizeColumnsModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWAUTOSIZECOLUMNSMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWAUTOSIZECOLUMNSMODECHANGED, value); } } /// /// /// [ DefaultValue(DataGridViewAutoSizeRowsMode.None), SRCategory(SR.CatLayout), SRDescription(SR.DataGridView_AutoSizeRowsModeDescr) ] public DataGridViewAutoSizeRowsMode AutoSizeRowsMode { get { return this.autoSizeRowsMode; } set { switch (value) { case DataGridViewAutoSizeRowsMode.None: case DataGridViewAutoSizeRowsMode.AllHeaders: case DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders: case DataGridViewAutoSizeRowsMode.AllCells: case DataGridViewAutoSizeRowsMode.DisplayedHeaders: case DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders: case DataGridViewAutoSizeRowsMode.DisplayedCells: break; default: throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewAutoSizeRowsMode)); } if ((value == DataGridViewAutoSizeRowsMode.AllHeaders || value == DataGridViewAutoSizeRowsMode.DisplayedHeaders) && !this.RowHeadersVisible) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotAutoSizeRowsInvisibleRowHeader)); } if (this.autoSizeRowsMode != value) { DataGridViewAutoSizeModeEventArgs dgvasme = new DataGridViewAutoSizeModeEventArgs(this.autoSizeRowsMode != DataGridViewAutoSizeRowsMode.None); this.autoSizeRowsMode = value; OnAutoSizeRowsModeChanged(dgvasme); } } } ///Gets or sets the rows' autosizing mode. ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewAutoSizeRowsModeChangedDescr) ] public event DataGridViewAutoSizeModeEventHandler AutoSizeRowsModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWAUTOSIZEROWSMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWAUTOSIZEROWSMODECHANGED, value); } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public override Color BackColor { get { return base.BackColor; } set { base.BackColor = value; } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler BackColorChanged { add { base.BackColorChanged += value; } remove { base.BackColorChanged -= value; } } internal SolidBrush BackgroundBrush { get { return this.backgroundBrush; } } /// /// /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridViewBackgroundColorDescr) ] public Color BackgroundColor { get { return this.backgroundBrush.Color; } set { if (value.IsEmpty) { throw new ArgumentException(SR.GetString(SR.DataGridView_EmptyColor, "BackgroundColor")); } if (value.A < 255) { throw new ArgumentException(SR.GetString(SR.DataGridView_TransparentColor, "BackgroundColor")); } if (!value.Equals(this.backgroundBrush.Color)) { this.backgroundBrush = new SolidBrush(value); OnBackgroundColorChanged(EventArgs.Empty); } } } ///Gets or sets the background color of the dataGridView. ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewBackgroundColorChangedDescr) ] public event EventHandler BackgroundColorChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWBACKGROUNDCOLORCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWBACKGROUNDCOLORCHANGED, value); } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] public override Image BackgroundImage { get { return base.BackgroundImage; } set { base.BackgroundImage = value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] public override ImageLayout BackgroundImageLayout { get { return base.BackgroundImageLayout; } set { base.BackgroundImageLayout = value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler BackgroundImageChanged { add { base.BackgroundImageChanged += value; } remove { base.BackgroundImageChanged -= value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler BackgroundImageLayoutChanged { add { base.BackgroundImageLayoutChanged += value; } remove { base.BackgroundImageLayoutChanged -= value; } } /// private bool ShouldSerializeBackgroundColor() { return !this.BackgroundColor.Equals(DefaultBackgroundBrush.Color); } /// [ DefaultValue(BorderStyle.FixedSingle), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_BorderStyleDescr) ] public BorderStyle BorderStyle { get { return this.borderStyle; } set { // Sequential enum. Valid values are 0x0 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)BorderStyle.None, (int)BorderStyle.Fixed3D)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(BorderStyle)); } if (this.borderStyle != value) { using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.BorderStyle)) { this.borderStyle = value; if (!this.AutoSize) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); } Invalidate(); OnBorderStyleChanged(EventArgs.Empty); } } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewBorderStyleChangedDescr) ] public event EventHandler BorderStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWBORDERSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWBORDERSTYLECHANGED, value); } } private int BorderWidth { get { if (this.BorderStyle == BorderStyle.Fixed3D) { return Application.RenderWithVisualStyles ? 1 : SystemInformation.Border3DSize.Width; } else if (this.BorderStyle == BorderStyle.FixedSingle) { return 1; } else { return 0; } } } internal Graphics CachedGraphics { get { if (this.cachedGraphics == null) { this.cachedGraphics = WindowsFormsUtils.CreateMeasurementGraphics(); } return this.cachedGraphics; } } // Ime can be shown when there is a read-write current cell. protected override bool CanEnableIme { get { bool canEnable = false; Debug.WriteLineIf( CompModSwitches.ImeMode.Level >= TraceLevel.Info, "Inside get_CanEnableIme(), this = " + this ); Debug.Indent(); if (this.ptCurrentCell.X != -1 /*&& !this.IsCurrentCellInEditMode*/ && ColumnEditable(this.ptCurrentCell.X)) { DataGridViewCell dataGridViewCell = this.CurrentCellInternal; Debug.Assert(dataGridViewCell != null); if (!IsSharedCellReadOnly(dataGridViewCell, this.ptCurrentCell.Y)) { canEnable = base.CanEnableIme; } } Debug.WriteLineIf( CompModSwitches.ImeMode.Level >= TraceLevel.Info, "Value = " + canEnable ); Debug.Unindent(); return canEnable; } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_CellBorderStyleDescr), Browsable(true), DefaultValue(DataGridViewCellBorderStyle.Single) ] public DataGridViewCellBorderStyle CellBorderStyle { get { switch (this.advancedCellBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.NotSet: if (this.advancedCellBorderStyle.Top == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Bottom == DataGridViewAdvancedCellBorderStyle.None) { if (this.RightToLeftInternal) { if (this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.Single) { return DataGridViewCellBorderStyle.SingleVertical; } } else { if (this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.Single) { return DataGridViewCellBorderStyle.SingleVertical; } } if (this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.Outset && this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.Outset) { return DataGridViewCellBorderStyle.RaisedVertical; } if (this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.Inset && this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.Inset) { return DataGridViewCellBorderStyle.SunkenVertical; } } if (this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.None) { if (this.advancedCellBorderStyle.Top == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Bottom == DataGridViewAdvancedCellBorderStyle.Single) { return DataGridViewCellBorderStyle.SingleHorizontal; } if (this.advancedCellBorderStyle.Top == DataGridViewAdvancedCellBorderStyle.Outset && this.advancedCellBorderStyle.Bottom == DataGridViewAdvancedCellBorderStyle.Outset) { return DataGridViewCellBorderStyle.RaisedHorizontal; } if (this.advancedCellBorderStyle.Top == DataGridViewAdvancedCellBorderStyle.Inset && this.advancedCellBorderStyle.Bottom == DataGridViewAdvancedCellBorderStyle.Inset) { return DataGridViewCellBorderStyle.SunkenHorizontal; } } return DataGridViewCellBorderStyle.Custom; case DataGridViewAdvancedCellBorderStyle.None: return DataGridViewCellBorderStyle.None; case DataGridViewAdvancedCellBorderStyle.Single: return DataGridViewCellBorderStyle.Single; case DataGridViewAdvancedCellBorderStyle.Inset: return DataGridViewCellBorderStyle.Sunken; case DataGridViewAdvancedCellBorderStyle.Outset: return DataGridViewCellBorderStyle.Raised; default: Debug.Fail("Unexpected this.advancedCellBorderStyle.All value in CellBorderStyle.get"); return DataGridViewCellBorderStyle.Custom; } } set { // Sequential enum. Valid values are 0x0 to 0xa if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewCellBorderStyle.Custom, (int)DataGridViewCellBorderStyle.SunkenHorizontal)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewCellBorderStyle)); } if (value != this.CellBorderStyle) { if (value == DataGridViewCellBorderStyle.Custom) { throw new ArgumentException(SR.GetString(SR.DataGridView_CustomCellBorderStyleInvalid, "CellBorderStyle")); } this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = true; try { switch (value) { case DataGridViewCellBorderStyle.Single: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single; break; case DataGridViewCellBorderStyle.Raised: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewCellBorderStyle.Sunken: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Inset; break; case DataGridViewCellBorderStyle.None: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; break; case DataGridViewCellBorderStyle.SingleVertical: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; if (this.RightToLeftInternal) { this.advancedCellBorderStyle.LeftInternal = DataGridViewAdvancedCellBorderStyle.Single; } else { this.advancedCellBorderStyle.RightInternal = DataGridViewAdvancedCellBorderStyle.Single; } break; case DataGridViewCellBorderStyle.RaisedVertical: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.RightInternal = DataGridViewAdvancedCellBorderStyle.Outset; this.advancedCellBorderStyle.LeftInternal = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewCellBorderStyle.SunkenVertical: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.RightInternal = DataGridViewAdvancedCellBorderStyle.Inset; this.advancedCellBorderStyle.LeftInternal = DataGridViewAdvancedCellBorderStyle.Inset; break; case DataGridViewCellBorderStyle.SingleHorizontal: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.BottomInternal = DataGridViewAdvancedCellBorderStyle.Single; break; case DataGridViewCellBorderStyle.RaisedHorizontal: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.TopInternal = DataGridViewAdvancedCellBorderStyle.Outset; this.advancedCellBorderStyle.BottomInternal = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewCellBorderStyle.SunkenHorizontal: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.TopInternal = DataGridViewAdvancedCellBorderStyle.Inset; this.advancedCellBorderStyle.BottomInternal = DataGridViewAdvancedCellBorderStyle.Inset; break; } } finally { this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = false; } OnCellBorderStyleChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellBorderStyleChangedDescr) ] public event EventHandler CellBorderStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLBORDERSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLBORDERSTYLECHANGED, value); } } internal bool CellMouseDownInContentBounds { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_cellMouseDownInContentBounds]; } set { this.dataGridViewState2[DATAGRIDVIEWSTATE2_cellMouseDownInContentBounds] = value; } } internal DataGridViewCellPaintingEventArgs CellPaintingEventArgs { get { if (this.dgvcpe == null) { this.dgvcpe = new DataGridViewCellPaintingEventArgs(this); } return this.dgvcpe; } } private DataGridViewCellStyleChangedEventArgs CellStyleChangedEventArgs { get { if (this.dgvcsce == null) { this.dgvcsce = new DataGridViewCellStyleChangedEventArgs(); } return this.dgvcsce; } } internal DataGridViewCellValueEventArgs CellValueEventArgs { get { if (this.dgvcve == null) { this.dgvcve = new DataGridViewCellValueEventArgs(); } return this.dgvcve; } } /// [ Browsable(true), DefaultValue(DataGridViewClipboardCopyMode.EnableWithAutoHeaderText), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_ClipboardCopyModeDescr) ] public DataGridViewClipboardCopyMode ClipboardCopyMode { get { return this.clipboardCopyMode; } set { // Sequential enum. Valid values are 0x0 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewClipboardCopyMode.Disable, (int)DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewClipboardCopyMode)); } this.clipboardCopyMode = value; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), DefaultValue(0), EditorBrowsable(EditorBrowsableState.Advanced) ] public int ColumnCount { get { return this.Columns.Count; } set { if (value < 0) { throw new ArgumentOutOfRangeException("ColumnCount", SR.GetString(SR.InvalidLowBoundArgumentEx, "ColumnCount", value.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture))); } if (this.DataSource != null) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotSetColumnCountOnDataBoundDataGridView)); } if (value != this.Columns.Count) { if (value == 0) { // Total removal of the columns. This also clears the rows. this.Columns.Clear(); } else if (value < this.Columns.Count) { // Some columns need to be removed, from the tail of the columns collection while (value < this.Columns.Count) { int currentColumnCount = this.Columns.Count; this.Columns.RemoveAt(currentColumnCount - 1); if (this.Columns.Count >= currentColumnCount) { // Column removal failed. We stop the loop. break; } } } else { // Some DataGridViewTextBoxColumn columns need to be appened. while (value > this.Columns.Count) { int currentColumnCount = this.Columns.Count; this.Columns.Add(null /*columnName*/, null /*headerText*/); if (this.Columns.Count <= currentColumnCount) { // Column addition failed. We stop the loop. break; } } } } } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ColumnHeadersBorderStyleDescr), Browsable(true), DefaultValue(DataGridViewHeaderBorderStyle.Raised) ] public DataGridViewHeaderBorderStyle ColumnHeadersBorderStyle { get { switch (this.advancedColumnHeadersBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.NotSet: return DataGridViewHeaderBorderStyle.Custom; case DataGridViewAdvancedCellBorderStyle.None: return DataGridViewHeaderBorderStyle.None; case DataGridViewAdvancedCellBorderStyle.Single: return DataGridViewHeaderBorderStyle.Single; case DataGridViewAdvancedCellBorderStyle.InsetDouble: return DataGridViewHeaderBorderStyle.Sunken; case DataGridViewAdvancedCellBorderStyle.OutsetPartial: return DataGridViewHeaderBorderStyle.Raised; default: return DataGridViewHeaderBorderStyle.Custom; } } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewHeaderBorderStyle.Custom, (int)DataGridViewHeaderBorderStyle.None)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewHeaderBorderStyle)); } if (value != this.ColumnHeadersBorderStyle) { if (value == DataGridViewHeaderBorderStyle.Custom) { throw new ArgumentException(SR.GetString(SR.DataGridView_CustomCellBorderStyleInvalid, "ColumnHeadersBorderStyle")); } this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = true; try { switch (value) { case DataGridViewHeaderBorderStyle.Single: this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single; break; case DataGridViewHeaderBorderStyle.Raised: this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.OutsetPartial; break; case DataGridViewHeaderBorderStyle.Sunken: this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.InsetDouble; break; case DataGridViewHeaderBorderStyle.None: this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; break; } } finally { this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = false; } OnColumnHeadersBorderStyleChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnHeadersBorderStyleChangedDescr) ] public event EventHandler ColumnHeadersBorderStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSBORDERSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSBORDERSTYLECHANGED, value); } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ColumnHeadersDefaultCellStyleDescr), AmbientValue(null) ] public DataGridViewCellStyle ColumnHeadersDefaultCellStyle { get { if (this.columnHeadersDefaultCellStyle == null) { this.columnHeadersDefaultCellStyle = this.DefaultColumnHeadersDefaultCellStyle; } return this.columnHeadersDefaultCellStyle; } set { DataGridViewCellStyle cs = this.ColumnHeadersDefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.ColumnHeaders); this.columnHeadersDefaultCellStyle = value; if (value != null) { this.columnHeadersDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.ColumnHeaders); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.ColumnHeadersDefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnColumnHeadersDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } private DataGridViewCellStyle DefaultColumnHeadersDefaultCellStyle { get { DataGridViewCellStyle defaultStyle = new DataGridViewCellStyle(); defaultStyle.BackColor = DefaultHeadersBackBrush.Color; defaultStyle.ForeColor = DefaultForeBrush.Color; defaultStyle.SelectionBackColor = DefaultSelectionBackBrush.Color; defaultStyle.SelectionForeColor = DefaultSelectionForeBrush.Color; defaultStyle.Font = base.Font; defaultStyle.AlignmentInternal = DataGridViewContentAlignment.MiddleLeft; defaultStyle.WrapModeInternal = DataGridViewTriState.True; defaultStyle.AddScope(this, DataGridViewCellStyleScopes.ColumnHeaders); this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientColumnHeadersFont] = true; return defaultStyle; } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewColumnHeadersDefaultCellStyleChangedDescr) ] public event EventHandler ColumnHeadersDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSDEFAULTCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatAppearance), Localizable(true), SRDescription(SR.DataGridView_ColumnHeadersHeightDescr) ] public int ColumnHeadersHeight { get { return this.columnHeadersHeight; } set { if (value < minimumColumnHeadersHeight) { throw new ArgumentOutOfRangeException("ColumnHeadersHeight", SR.GetString(SR.InvalidLowBoundArgumentEx, "ColumnHeadersHeight", (value).ToString(CultureInfo.CurrentCulture), (minimumColumnHeadersHeight).ToString(CultureInfo.CurrentCulture))); } if (value > maxHeadersThickness) { throw new ArgumentOutOfRangeException("ColumnHeadersHeight", SR.GetString(SR.InvalidHighBoundArgumentEx, "ColumnHeadersHeight", (value).ToString(CultureInfo.CurrentCulture), (maxHeadersThickness).ToString(CultureInfo.CurrentCulture))); } if (this.ColumnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.AutoSize) { this.cachedColumnHeadersHeight = value; } else if (this.columnHeadersHeight != value) { SetColumnHeadersHeightInternal(value, true /*invalidInAdjustFillingColumns*/); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewColumnHeadersHeightChangedDescr) ] public event EventHandler ColumnHeadersHeightChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTCHANGED, value); } } private bool ShouldSerializeColumnHeadersHeight() { return this.ColumnHeadersHeightSizeMode != DataGridViewColumnHeadersHeightSizeMode.AutoSize && defaultColumnHeadersHeight != this.ColumnHeadersHeight; } /// /// /// [ DefaultValue(DataGridViewColumnHeadersHeightSizeMode.EnableResizing), RefreshProperties(RefreshProperties.All), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_ColumnHeadersHeightSizeModeDescr) ] public DataGridViewColumnHeadersHeightSizeMode ColumnHeadersHeightSizeMode { get { return this.columnHeadersHeightSizeMode; } set { // Sequential enum. Valid values are 0x0 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewColumnHeadersHeightSizeMode.EnableResizing, (int)DataGridViewColumnHeadersHeightSizeMode.AutoSize)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewColumnHeadersHeightSizeMode)); } if (this.columnHeadersHeightSizeMode != value) { /*if (value == DataGridViewColumnHeadersHeightSizeMode.AutoSize && !this.ColumnHeadersVisible) { We intentionally don't throw an error because of designer code spit order. }*/ DataGridViewAutoSizeModeEventArgs dgvasme = new DataGridViewAutoSizeModeEventArgs(this.columnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.AutoSize); this.columnHeadersHeightSizeMode = value; OnColumnHeadersHeightSizeModeChanged(dgvasme); } } } ////// Gets or sets a value that determines the behavior for adjusting the column headers height. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnHeadersHeightSizeModeChangedDescr) ] public event DataGridViewAutoSizeModeEventHandler ColumnHeadersHeightSizeModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTSIZEMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTSIZEMODECHANGED, value); } } /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(true), SRDescription(SR.DataGridViewColumnHeadersVisibleDescr) ] public bool ColumnHeadersVisible { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_columnHeadersVisible]; } set { if (this.ColumnHeadersVisible != value) { if (!value) { // Make sure that there is no visible column that only counts on the column headers to autosize DataGridViewColumn dataGridViewColumn = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); while (dataGridViewColumn != null) { if (dataGridViewColumn.InheritedAutoSizeMode == DataGridViewAutoSizeColumnMode.ColumnHeader) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_ColumnHeadersCannotBeInvisible)); } dataGridViewColumn = this.Columns.GetNextColumn(dataGridViewColumn, DataGridViewElementStates.Visible, DataGridViewElementStates.None); } } using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.ColumnHeadersVisible)) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_columnHeadersVisible] = value; this.layout.ColumnHeadersVisible = value; this.displayedBandsInfo.EnsureDirtyState(); if (!this.AutoSize) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); } InvalidateInside(); OnColumnHeadersGlobalAutoSize(); } } } } ////// Gets /// or sets a value indicating if the dataGridView's column headers are visible. /// ///[ Editor("System.Windows.Forms.Design.DataGridViewColumnCollectionEditor, " + AssemblyRef.SystemDesign, typeof(System.Drawing.Design.UITypeEditor)), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), MergableProperty(false) ] public DataGridViewColumnCollection Columns { get { if (this.dataGridViewColumns == null) { this.dataGridViewColumns = CreateColumnsInstance(); } return this.dataGridViewColumns; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public DataGridViewCell CurrentCell { get { if (this.ptCurrentCell.X == -1 && this.ptCurrentCell.Y == -1) { return null; } Debug.Assert(this.ptCurrentCell.X >= 0 && ptCurrentCell.Y >= 0); Debug.Assert(this.ptCurrentCell.X < this.Columns.Count); Debug.Assert(this.ptCurrentCell.Y < this.Rows.Count); DataGridViewRow dataGridViewRow = (DataGridViewRow) this.Rows[this.ptCurrentCell.Y]; // unsharing row return dataGridViewRow.Cells[this.ptCurrentCell.X]; } set { if ((value != null && (value.RowIndex != this.ptCurrentCell.Y || value.ColumnIndex != this.ptCurrentCell.X)) || (value == null && this.ptCurrentCell.X != -1)) { if (value == null) { ClearSelection(); if (!SetCurrentCellAddressCore(-1, -1, true /*setAnchorCellAddress*/, true /*validateCurrentCell*/, false /*throughMouseClick*/)) { // Edited value couldn't be committed or aborted throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } } else { if (value.DataGridView != this) { throw new ArgumentException(SR.GetString(SR.DataGridView_CellDoesNotBelongToDataGridView)); } if (!this.Columns[value.ColumnIndex].Visible || (this.Rows.GetRowState(value.RowIndex) & DataGridViewElementStates.Visible) == 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CurrentCellCannotBeInvisible)); } if (!ScrollIntoView(value.ColumnIndex, value.RowIndex, true)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } if (IsInnerCellOutOfBounds(value.ColumnIndex, value.RowIndex)) { return; } ClearSelection(value.ColumnIndex, value.RowIndex, true /*selectExceptionElement*/); if (!SetCurrentCellAddressCore(value.ColumnIndex, value.RowIndex, true, false, false)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } } } } } /// [ Browsable(false) ] public Point CurrentCellAddress { get { return this.ptCurrentCell; } } private DataGridViewCell CurrentCellInternal { get { Debug.Assert(this.ptCurrentCell.X >= 0 && this.ptCurrentCell.X < this.Columns.Count); Debug.Assert(this.ptCurrentCell.Y >= 0 && this.ptCurrentCell.Y < this.Rows.Count); DataGridViewRow dataGridViewRow = this.Rows.SharedRow(this.ptCurrentCell.Y); Debug.Assert(dataGridViewRow != null); DataGridViewCell dataGridViewCell = dataGridViewRow.Cells[this.ptCurrentCell.X]; Debug.Assert(this.IsSharedCellVisible(dataGridViewCell, this.ptCurrentCell.Y)); return dataGridViewCell; } } private bool CurrentCellIsFirstVisibleCell { get { if (this.ptCurrentCell.X == -1) { return false; } Debug.Assert(this.ptCurrentCell.Y != -1); bool previousVisibleColumnExists = (null != this.Columns.GetPreviousColumn(this.Columns[this.ptCurrentCell.X], DataGridViewElementStates.Visible, DataGridViewElementStates.None)); bool previousVisibleRowExists = (-1 != this.Rows.GetPreviousRow(this.ptCurrentCell.Y, DataGridViewElementStates.Visible)); return !previousVisibleColumnExists && !previousVisibleRowExists; } } private bool CurrentCellIsLastVisibleCell { get { if (this.ptCurrentCell.X == -1) { return false; } Debug.Assert(this.ptCurrentCell.Y != -1); bool nextVisibleColumnExists = (null != this.Columns.GetNextColumn(this.Columns[this.ptCurrentCell.X], DataGridViewElementStates.Visible, DataGridViewElementStates.None)); bool nextVisibleRowExists = (-1 != this.Rows.GetNextRow(this.ptCurrentCell.Y, DataGridViewElementStates.Visible)); return !nextVisibleColumnExists && !nextVisibleRowExists; } } private bool CurrentCellIsEditedAndOnlySelectedCell { get { if (this.ptCurrentCell.X == -1) { return false; } Debug.Assert(this.ptCurrentCell.Y != -1); return this.editingControl != null && GetCellCount(DataGridViewElementStates.Selected) == 1 && this.CurrentCellInternal.Selected; } } /// [ Browsable(false) ] public DataGridViewRow CurrentRow { get { if (this.ptCurrentCell.X == -1) { return null; } Debug.Assert(this.ptCurrentCell.Y >= 0); Debug.Assert(this.ptCurrentCell.Y < this.Rows.Count); return this.Rows[this.ptCurrentCell.Y]; } } internal Cursor CursorInternal { set { this.dataGridViewState2[DATAGRIDVIEWSTATE2_ignoreCursorChange] = true; try { this.Cursor = value; } finally { this.dataGridViewState2[DATAGRIDVIEWSTATE2_ignoreCursorChange] = false; } } } internal DataGridViewDataConnection DataConnection { get { return this.dataConnection; } } /// [ DefaultValue(""), SRCategory(SR.CatData), Editor("System.Windows.Forms.Design.DataMemberListEditor, " + AssemblyRef.SystemDesign, typeof(System.Drawing.Design.UITypeEditor)), SRDescription(SR.DataGridViewDataMemberDescr) ] public string DataMember { get { if (this.dataConnection == null) { return String.Empty; } else { return this.dataConnection.DataMember; } } set { if (value != this.DataMember) { this.CurrentCell = null; if (this.dataConnection == null) { this.dataConnection = new DataGridViewDataConnection(this); } this.dataConnection.SetDataConnection(this.DataSource, value); OnDataMemberChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewDataMemberChangedDescr) ] public event EventHandler DataMemberChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDATAMEMBERCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDATAMEMBERCHANGED, value); } } /// [ DefaultValue(null), SRCategory(SR.CatData), RefreshProperties(RefreshProperties.Repaint), AttributeProvider(typeof(IListSource)), SRDescription(SR.DataGridViewDataSourceDescr) ] public object DataSource { get { if (this.dataConnection == null) { return null; } else { return this.dataConnection.DataSource; } } set { if (value != this.DataSource) { this.CurrentCell = null; if (this.dataConnection == null) { this.dataConnection = new DataGridViewDataConnection(this); this.dataConnection.SetDataConnection(value, this.DataMember); } else { if (this.dataConnection.ShouldChangeDataMember(value)) { // we fire DataMemberChanged event this.DataMember = ""; } this.dataConnection.SetDataConnection(value, this.DataMember); if (value == null) { this.dataConnection = null; } } OnDataSourceChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewDataSourceChangedDescr) ] public event EventHandler DataSourceChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDATASOURCECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDATASOURCECHANGED, value); } } private static SolidBrush DefaultBackBrush { get { return (SolidBrush) SystemBrushes.Window; } } private static SolidBrush DefaultBackgroundBrush { get { return (SolidBrush) SystemBrushes.AppWorkspace; } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_DefaultCellStyleDescr), AmbientValue(null) ] public DataGridViewCellStyle DefaultCellStyle { get { if (this.defaultCellStyle == null) { this.defaultCellStyle = this.DefaultDefaultCellStyle; return this.defaultCellStyle; } else if (this.defaultCellStyle.BackColor == Color.Empty || this.defaultCellStyle.ForeColor == Color.Empty || this.defaultCellStyle.SelectionBackColor == Color.Empty || this.defaultCellStyle.SelectionForeColor == Color.Empty || this.defaultCellStyle.Font == null || this.defaultCellStyle.Alignment == DataGridViewContentAlignment.NotSet || this.defaultCellStyle.WrapMode == DataGridViewTriState.NotSet) { DataGridViewCellStyle defaultCellStyleTmp = new DataGridViewCellStyle(this.defaultCellStyle); defaultCellStyleTmp.Scope = DataGridViewCellStyleScopes.None; if (this.defaultCellStyle.BackColor == Color.Empty) { defaultCellStyleTmp.BackColor = DefaultBackBrush.Color; } if (this.defaultCellStyle.ForeColor == Color.Empty) { defaultCellStyleTmp.ForeColor = base.ForeColor; this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientForeColor] = true; } if (this.defaultCellStyle.SelectionBackColor == Color.Empty) { defaultCellStyleTmp.SelectionBackColor = DefaultSelectionBackBrush.Color; } if (this.defaultCellStyle.SelectionForeColor == Color.Empty) { defaultCellStyleTmp.SelectionForeColor = DefaultSelectionForeBrush.Color; } if (this.defaultCellStyle.Font == null) { defaultCellStyleTmp.Font = base.Font; this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientFont] = true; } if (this.defaultCellStyle.Alignment == DataGridViewContentAlignment.NotSet) { defaultCellStyleTmp.AlignmentInternal = DataGridViewContentAlignment.MiddleLeft; } if (this.defaultCellStyle.WrapMode == DataGridViewTriState.NotSet) { defaultCellStyleTmp.WrapModeInternal = DataGridViewTriState.False; } defaultCellStyleTmp.AddScope(this, DataGridViewCellStyleScopes.DataGridView); return defaultCellStyleTmp; } else { return this.defaultCellStyle; } } set { DataGridViewCellStyle cs = this.DefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.DataGridView); this.defaultCellStyle = value; if (value != null) { this.defaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.DataGridView); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.DefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } private DataGridViewCellStyle DefaultDefaultCellStyle { get { DataGridViewCellStyle defaultCellStyle = new DataGridViewCellStyle(); defaultCellStyle.BackColor = DefaultBackBrush.Color; defaultCellStyle.ForeColor = base.ForeColor; defaultCellStyle.SelectionBackColor = DefaultSelectionBackBrush.Color; defaultCellStyle.SelectionForeColor = DefaultSelectionForeBrush.Color; defaultCellStyle.Font = base.Font; defaultCellStyle.AlignmentInternal = DataGridViewContentAlignment.MiddleLeft; defaultCellStyle.WrapModeInternal = DataGridViewTriState.False; defaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.DataGridView); this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientFont] = true; this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientForeColor] = true; return defaultCellStyle; } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewDefaultCellStyleChangedDescr) ] public event EventHandler DefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDEFAULTCELLSTYLECHANGED, value); } } private static SolidBrush DefaultForeBrush { get { return (SolidBrush) SystemBrushes.WindowText; } } private static Color DefaultGridColor { get { return SystemColors.ControlDark; } } private static SolidBrush DefaultHeadersBackBrush { get { return (SolidBrush) SystemBrushes.Control; } } private DataGridViewCellStyle DefaultRowHeadersDefaultCellStyle { get { DataGridViewCellStyle defaultStyle = new DataGridViewCellStyle(); defaultStyle.BackColor = DefaultHeadersBackBrush.Color; defaultStyle.ForeColor = DefaultForeBrush.Color; defaultStyle.SelectionBackColor = DefaultSelectionBackBrush.Color; defaultStyle.SelectionForeColor = DefaultSelectionForeBrush.Color; defaultStyle.Font = base.Font; defaultStyle.AlignmentInternal = DataGridViewContentAlignment.MiddleLeft; defaultStyle.WrapModeInternal = DataGridViewTriState.True; defaultStyle.AddScope(this, DataGridViewCellStyleScopes.RowHeaders); this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientRowHeadersFont] = true; return defaultStyle; } } private static SolidBrush DefaultSelectionBackBrush { get { return (SolidBrush) SystemBrushes.Highlight; } } private static SolidBrush DefaultSelectionForeBrush { get { return (SolidBrush) SystemBrushes.HighlightText; } } /// protected override Size DefaultSize { get { return new Size(240, 150); } } internal DisplayedBandsData DisplayedBandsInfo { get { return this.displayedBandsInfo; } } /// /// /// Returns the client rect of the display area of the control. /// The DataGridView control return its client rectangle minus the potential scrollbars. /// public override Rectangle DisplayRectangle { get { Rectangle rectDisplay = this.ClientRectangle; if (this.horizScrollBar != null && this.horizScrollBar.Visible) { rectDisplay.Height -= this.horizScrollBar.Height; } if (this.vertScrollBar != null && this.vertScrollBar.Visible) { rectDisplay.Width -= this.vertScrollBar.Width; if (this.RightToLeftInternal) { rectDisplay.X = this.vertScrollBar.Width; } } return rectDisplay; } } ///[ SRCategory(SR.CatBehavior), DefaultValue(DataGridViewEditMode.EditOnKeystrokeOrF2), SRDescription(SR.DataGridView_EditModeDescr) ] public DataGridViewEditMode EditMode { get { return this.editMode; } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewEditMode.EditOnEnter, (int)DataGridViewEditMode.EditProgrammatically)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewEditMode)); } if (this.editMode != value) { this.editMode = value; OnEditModeChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_EditModeChangedDescr) ] public event EventHandler EditModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWEDITMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWEDITMODECHANGED, value); } } internal Point MouseEnteredCellAddress { get { return this.ptMouseEnteredCell; } } private bool MouseOverEditingControl { get { if (this.editingControl != null) { Point ptMouse = PointToClient(Control.MousePosition); return this.editingControl.Bounds.Contains(ptMouse); } return false; } } private bool MouseOverEditingPanel { get { if (this.editingPanel != null) { Point ptMouse = PointToClient(Control.MousePosition); return this.editingPanel.Bounds.Contains(ptMouse); } return false; } } private bool MouseOverScrollBar { get { Point ptMouse = PointToClient(Control.MousePosition); if (this.vertScrollBar != null && this.vertScrollBar.Visible) { if (this.vertScrollBar.Bounds.Contains(ptMouse)) { return true; } } if (this.horizScrollBar != null && this.horizScrollBar.Visible) { return this.horizScrollBar.Bounds.Contains(ptMouse); } return false; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public Control EditingControl { get { return this.editingControl; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public Panel EditingPanel { get { if (this.editingPanel == null) { this.editingPanel = new Panel(); this.editingPanel.AccessibleName = SR.GetString(SR.DataGridView_AccEditingPanelAccName); } return this.editingPanel; } } /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(true), SRDescription(SR.DataGridView_EnableHeadersVisualStylesDescr) ] public bool EnableHeadersVisualStyles { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_enableHeadersVisualStyles]; } set { if (this.dataGridViewState2[DATAGRIDVIEWSTATE2_enableHeadersVisualStyles] != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_enableHeadersVisualStyles] = value; //OnEnableHeadersVisualStylesChanged(EventArgs.Empty); // Some autosizing may have to be applied since the margins are potentially changed. OnGlobalAutoSize(); // Put this into OnEnableHeadersVisualStylesChanged if created. } } } ////// Determines whether the DataGridView's header cells render using XP theming visual styles or not /// when visual styles are enabled in the application. /// ///[ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public DataGridViewCell FirstDisplayedCell { get { Point firstDisplayedCellAddress = this.FirstDisplayedCellAddress; if (firstDisplayedCellAddress.X >= 0) { return this.Rows[firstDisplayedCellAddress.Y].Cells[firstDisplayedCellAddress.X]; // unshares the row of first displayed cell } return null; } set { if (value != null) { DataGridViewCell firstDisplayedCell = value; if (firstDisplayedCell.DataGridView != this) { throw new ArgumentException(SR.GetString(SR.DataGridView_CellDoesNotBelongToDataGridView)); } if (firstDisplayedCell.RowIndex == -1 || firstDisplayedCell.ColumnIndex == -1) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedCellCannotBeAHeaderOrSharedCell)); } Debug.Assert(firstDisplayedCell.RowIndex >= 0 && firstDisplayedCell.RowIndex < this.Rows.Count && firstDisplayedCell.ColumnIndex >= 0 && firstDisplayedCell.ColumnIndex < this.Columns.Count); if (!firstDisplayedCell.Visible) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedCellCannotBeInvisible)); } if (!firstDisplayedCell.Frozen) { if (!this.Rows[firstDisplayedCell.RowIndex].Frozen) { this.FirstDisplayedScrollingRowIndex = firstDisplayedCell.RowIndex; } if (!this.Columns[firstDisplayedCell.ColumnIndex].Frozen) { this.FirstDisplayedScrollingColumnIndex = firstDisplayedCell.ColumnIndex; } } } } } private Point FirstDisplayedCellAddress { get { Point ptFirstDisplayedCellAddress = new Point(-1, -1); ptFirstDisplayedCellAddress.Y = this.Rows.GetFirstRow(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (ptFirstDisplayedCellAddress.Y == -1) { Debug.Assert(this.displayedBandsInfo.NumTotallyDisplayedFrozenRows == 0); if (this.displayedBandsInfo.FirstDisplayedScrollingRow >= 0) { ptFirstDisplayedCellAddress.Y = this.displayedBandsInfo.FirstDisplayedScrollingRow; } #if DEBUG else { Debug.Assert(this.displayedBandsInfo.FirstDisplayedScrollingRow == -1); Debug.Assert(this.displayedBandsInfo.NumDisplayedScrollingRows == 0); Debug.Assert(this.displayedBandsInfo.NumTotallyDisplayedScrollingRows == 0); } #endif } if (ptFirstDisplayedCellAddress.Y >= 0) { ptFirstDisplayedCellAddress.X = this.FirstDisplayedColumnIndex; } return ptFirstDisplayedCellAddress; } } internal int FirstDisplayedColumnIndex { get { if (!this.IsHandleCreated) { return -1; } int firstDisplayedColumnIndex = -1; DataGridViewColumn dataGridViewColumn = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); if (dataGridViewColumn != null) { if (dataGridViewColumn.Frozen) { firstDisplayedColumnIndex = dataGridViewColumn.Index; } else if (this.displayedBandsInfo.FirstDisplayedScrollingCol >= 0) { firstDisplayedColumnIndex = this.displayedBandsInfo.FirstDisplayedScrollingCol; } } #if DEBUG DataGridViewColumn dataGridViewColumnDbg1 = this.Columns.GetFirstColumn(DataGridViewElementStates.Displayed); int firstDisplayedColumnIndexDbg1 = (dataGridViewColumnDbg1 == null) ? -1 : dataGridViewColumnDbg1.Index; int firstDisplayedColumnIndexDbg2 = -1; DataGridViewColumn dataGridViewColumnDbg = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (dataGridViewColumnDbg != null) { firstDisplayedColumnIndexDbg2 = dataGridViewColumnDbg.Index; } else if (this.displayedBandsInfo.FirstDisplayedScrollingCol >= 0) { firstDisplayedColumnIndexDbg2 = this.displayedBandsInfo.FirstDisplayedScrollingCol; } else { Debug.Assert(this.displayedBandsInfo.LastTotallyDisplayedScrollingCol == -1); } Debug.Assert(firstDisplayedColumnIndex == firstDisplayedColumnIndexDbg1 || !this.Visible || this.displayedBandsInfo.Dirty); Debug.Assert(firstDisplayedColumnIndex == firstDisplayedColumnIndexDbg2 || this.displayedBandsInfo.Dirty); #endif return firstDisplayedColumnIndex; } } internal int FirstDisplayedRowIndex { get { if (!this.IsHandleCreated) { return -1; } int firstDisplayedRowIndex = this.Rows.GetFirstRow(DataGridViewElementStates.Visible); if (firstDisplayedRowIndex != -1) { if ((this.Rows.GetRowState(firstDisplayedRowIndex) & DataGridViewElementStates.Frozen) == 0 && this.displayedBandsInfo.FirstDisplayedScrollingRow >= 0) { firstDisplayedRowIndex = this.displayedBandsInfo.FirstDisplayedScrollingRow; } } #if FALSE //DEBUG int firstDisplayedRowIndexDbg1 = this.Rows.GetFirstRow(DataGridViewElementStates.Displayed); int firstDisplayedRowIndexDbg2 = this.Rows.GetFirstRow(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (firstDisplayedRowIndexDbg2 == -1) { if (this.displayedBandsInfo.FirstDisplayedScrollingRow >= 0) { firstDisplayedRowIndexDbg2 = this.displayedBandsInfo.FirstDisplayedScrollingRow; } } Debug.Assert(firstDisplayedRowIndex == firstDisplayedRowIndexDbg1 || !this.Visible || this.displayedBandsInfo.Dirty, "firstDisplayedRowIndex =" + firstDisplayedRowIndex.ToString() + ", firstDisplayedRowIndexDbg1=" + firstDisplayedRowIndexDbg1.ToString()); Debug.Assert(firstDisplayedRowIndex == firstDisplayedRowIndexDbg2 || this.displayedBandsInfo.Dirty, "firstDisplayedRowIndex =" + firstDisplayedRowIndex.ToString() + ", firstDisplayedRowIndexDbg2=" + firstDisplayedRowIndexDbg2.ToString()); #endif return firstDisplayedRowIndex; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int FirstDisplayedScrollingColumnHiddenWidth { get { return this.negOffset; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int FirstDisplayedScrollingColumnIndex { get { return this.displayedBandsInfo.FirstDisplayedScrollingCol; } set { if (value < 0 || value >= this.Columns.Count) { throw new ArgumentOutOfRangeException("value"); } if (!this.Columns[value].Visible) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedScrollingColumnCannotBeInvisible)); } if (this.Columns[value].Frozen) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedScrollingColumnCannotBeFrozen)); } if (!this.IsHandleCreated) { CreateHandle(); } int displayWidth = this.layout.Data.Width; if (displayWidth <= 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_NoRoomForDisplayedColumns)); } int totalVisibleFrozenWidth = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (totalVisibleFrozenWidth >= displayWidth) { Debug.Assert(totalVisibleFrozenWidth > 0); throw new InvalidOperationException(SR.GetString(SR.DataGridView_FrozenColumnsPreventFirstDisplayedScrollingColumn)); } if (value == this.displayedBandsInfo.FirstDisplayedScrollingCol) { return; } if (this.ptCurrentCell.X >= 0 && !CommitEdit(DataGridViewDataErrorContexts.Parsing | DataGridViewDataErrorContexts.Commit | DataGridViewDataErrorContexts.Scroll, false /*forCurrentCellChange*/, false /*forCurrentRowChange*/)) { // Could not commit edited cell value - return silently // [....]: should we throw an error here? return; } if (IsColumnOutOfBounds(value)) { return; } bool success = ScrollColumnIntoView(value, -1, /*committed*/ true, false /*forCurrentCellChange*/); Debug.Assert(success); Debug.Assert(this.displayedBandsInfo.FirstDisplayedScrollingCol >= 0); Debug.Assert(this.displayedBandsInfo.FirstDisplayedScrollingCol == value || this.Columns.DisplayInOrder(this.displayedBandsInfo.FirstDisplayedScrollingCol, value)); int maxHorizontalOffset = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - displayWidth; while (this.displayedBandsInfo.FirstDisplayedScrollingCol != value && this.HorizontalOffset < maxHorizontalOffset) { ScrollColumns(1); } } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int FirstDisplayedScrollingRowIndex { get { return this.displayedBandsInfo.FirstDisplayedScrollingRow; } set { if (value < 0 || value >= this.Rows.Count) { throw new ArgumentOutOfRangeException("value"); } if ((this.Rows.GetRowState(value) & DataGridViewElementStates.Visible) == 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedScrollingRowCannotBeInvisible)); } if ((this.Rows.GetRowState(value) & DataGridViewElementStates.Frozen) != 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedScrollingRowCannotBeFrozen)); } if (!this.IsHandleCreated) { CreateHandle(); } int displayHeight = this.layout.Data.Height; if (displayHeight <= 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_NoRoomForDisplayedRows)); } int totalVisibleFrozenHeight = this.Rows.GetRowsHeight(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (totalVisibleFrozenHeight >= displayHeight) { Debug.Assert(totalVisibleFrozenHeight > 0); throw new InvalidOperationException(SR.GetString(SR.DataGridView_FrozenRowsPreventFirstDisplayedScrollingRow)); } if (value == this.displayedBandsInfo.FirstDisplayedScrollingRow) { return; } if (this.ptCurrentCell.X >= 0 && !CommitEdit(DataGridViewDataErrorContexts.Parsing | DataGridViewDataErrorContexts.Commit | DataGridViewDataErrorContexts.Scroll, false /*forCurrentCellChange*/, false /*forCurrentRowChange*/)) { // Could not commit edited cell value - return silently // [....]: should we throw an error here? return; } if (IsRowOutOfBounds(value)) { return; } Debug.Assert(this.displayedBandsInfo.FirstDisplayedScrollingRow >= 0); if (value > this.displayedBandsInfo.FirstDisplayedScrollingRow) { int rowsToScroll = this.Rows.GetRowCount(DataGridViewElementStates.Visible, this.displayedBandsInfo.FirstDisplayedScrollingRow, value); Debug.Assert(rowsToScroll != 0); ScrollRowsByCount(rowsToScroll, rowsToScroll > 1 ? ScrollEventType.LargeIncrement : ScrollEventType.SmallIncrement); } else { bool success = ScrollRowIntoView(-1, value, /*committed*/ true, false /*forCurrentCellChange*/); Debug.Assert(success); } } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public override Color ForeColor { get { return base.ForeColor; } set { base.ForeColor = value; } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] new public event EventHandler ForeColorChanged { add { base.ForeColorChanged += value; } remove { base.ForeColorChanged -= value; } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public override Font Font { get { return base.Font; } set { base.Font = value; } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] new public event EventHandler FontChanged { add { base.FontChanged += value; } remove { base.FontChanged -= value; } } /// /// /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridViewGridColorDescr) ] public Color GridColor { get { return this.gridPen.Color; } set { if (value.IsEmpty) { throw new ArgumentException(SR.GetString(SR.DataGridView_EmptyColor, "GridColor")); } if (value.A < 255) { throw new ArgumentException(SR.GetString(SR.DataGridView_TransparentColor, "GridColor")); } if (!value.Equals(this.gridPen.Color)) { this.gridPen = new Pen(value); OnGridColorChanged(EventArgs.Empty); } } } ///Gets or sets the grid color of the dataGridView (when Single mode is used). ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnGridColorChangedDescr) ] public event EventHandler GridColorChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWGRIDCOLORCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWGRIDCOLORCHANGED, value); } } /// private bool ShouldSerializeGridColor() { return !this.GridPen.Color.Equals(DefaultGridColor); } internal Pen GridPen { get { return this.gridPen; } } internal int HorizontalOffset { get { return this.horizontalOffset; } set { if (value < 0) { value = 0; } int widthNotVisible = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - this.layout.Data.Width; if (value > widthNotVisible && widthNotVisible > 0) { value = widthNotVisible; } if (value == this.horizontalOffset) { return; } ScrollEventType scrollEventType; int oldFirstVisibleScrollingCol = this.displayedBandsInfo.FirstDisplayedScrollingCol; int change = this.horizontalOffset - value; if (this.horizScrollBar.Enabled) { this.horizScrollBar.Value = value; } this.horizontalOffset = value; int totalVisibleFrozenWidth = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); Rectangle rectTmp = this.layout.Data; if (this.layout.ColumnHeadersVisible) { // column headers must scroll as well rectTmp = Rectangle.Union(rectTmp, this.layout.ColumnHeaders); } else if (this.SingleVerticalBorderAdded) { if (!this.RightToLeftInternal) { rectTmp.X--; } rectTmp.Width++; } if (this.SingleVerticalBorderAdded && totalVisibleFrozenWidth > 0) { if (!this.RightToLeftInternal) { rectTmp.X++; } rectTmp.Width--; } if (!this.RightToLeftInternal) { rectTmp.X += totalVisibleFrozenWidth; } rectTmp.Width -= totalVisibleFrozenWidth; this.displayedBandsInfo.FirstDisplayedScrollingCol = ComputeFirstVisibleScrollingColumn(); // update the lastTotallyDisplayedScrollingCol ComputeVisibleColumns(); if (this.editingControl != null && !this.Columns[this.ptCurrentCell.X].Frozen && this.displayedBandsInfo.FirstDisplayedScrollingCol > -1) { PositionEditingControl(true /*setLocation*/, false /*setSize*/, false /*setFocus*/); } // The mouse probably is not over the same cell after the scroll. UpdateMouseEnteredCell(null /*HitTestInfo*/, null /*MouseEventArgs*/); if (oldFirstVisibleScrollingCol == this.displayedBandsInfo.FirstDisplayedScrollingCol) { scrollEventType = change > 0 ? ScrollEventType.SmallIncrement : ScrollEventType.SmallDecrement; } else if (this.Columns.DisplayInOrder(oldFirstVisibleScrollingCol, this.displayedBandsInfo.FirstDisplayedScrollingCol)) { scrollEventType = this.Columns.GetColumnCount(DataGridViewElementStates.Visible, oldFirstVisibleScrollingCol, this.displayedBandsInfo.FirstDisplayedScrollingCol) > 1 ? ScrollEventType.LargeIncrement : ScrollEventType.SmallIncrement; } else { Debug.Assert(this.Columns.DisplayInOrder(this.displayedBandsInfo.FirstDisplayedScrollingCol, oldFirstVisibleScrollingCol)); scrollEventType = this.Columns.GetColumnCount(DataGridViewElementStates.Visible, this.displayedBandsInfo.FirstDisplayedScrollingCol, oldFirstVisibleScrollingCol) > 1 ? ScrollEventType.LargeDecrement : ScrollEventType.SmallDecrement; } NativeMethods.RECT[] rects = CreateScrollableRegion(rectTmp); if (this.RightToLeftInternal) { change = -change; } ScrollRectangles(rects, change); if (!this.dataGridViewState2[DATAGRIDVIEWSTATE2_stopRaisingHorizontalScroll]) { OnScroll(scrollEventType, this.horizontalOffset + change, this.horizontalOffset, ScrollOrientation.HorizontalScroll); } FlushDisplayedChanged(); } } /// protected ScrollBar HorizontalScrollBar { get { return this.horizScrollBar; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int HorizontalScrollingOffset { get { return this.horizontalOffset; } set { // int widthNotVisible = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - this.layout.Data.Width; if (value < 0) { throw new ArgumentOutOfRangeException("HorizontalScrollingOffset", SR.GetString(SR.InvalidLowBoundArgumentEx, "HorizontalScrollingOffset", (value).ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture))); } // Intentionally ignoring the out of range situation. // else if (value > widthNotVisible && widthNotVisible > 0) //{ // throw new ArgumentOutOfRangeException(SR.GetString(SR.DataGridView_PropertyTooLarge, "HorizontalScrollingOffset", (widthNotVisible).ToString())); //} else if (value > 0 && (this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - this.layout.Data.Width) <= 0) { // Intentionally ignoring the case where dev tries to set value while there is no horizontal scrolling possible. // throw new ArgumentOutOfRangeException("HorizontalScrollingOffset", SR.GetString(SR.DataGridView_PropertyMustBeZero)); Debug.Assert(this.horizontalOffset == 0); return; } if (value == this.horizontalOffset) { return; } this.HorizontalOffset = value; } } private System.Windows.Forms.Timer HorizScrollTimer { get { if (this.horizScrollTimer == null) { this.horizScrollTimer = new System.Windows.Forms.Timer(); this.horizScrollTimer.Tick += new System.EventHandler(HorizScrollTimer_Tick); } return this.horizScrollTimer; } } private bool InAdjustFillingColumns { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inAdjustFillingColumn] || this.dataGridViewOper[DATAGRIDVIEWOPER_inAdjustFillingColumns]; } } internal bool InBeginEdit { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inBeginEdit]; } } internal bool InDisplayIndexAdjustments { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inDisplayIndexAdjustments]; } set { this.dataGridViewOper[DATAGRIDVIEWOPER_inDisplayIndexAdjustments] = value; } } internal bool InEndEdit { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inEndEdit]; } } private DataGridViewCellStyle InheritedEditingCellStyle { get { if (this.ptCurrentCell.X == -1) { return null; } return this.CurrentCellInternal.GetInheritedStyleInternal(this.ptCurrentCell.Y); } } internal bool InInitialization { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing]; } } internal bool InSortOperation { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inSort]; } } /// [Browsable(false)] public bool IsCurrentCellDirty { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedCellChanged]; } } private bool IsCurrentCellDirtyInternal { set { if (value != this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedCellChanged]) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedCellChanged] = value; OnCurrentCellDirtyStateChanged(EventArgs.Empty); } } } /// [Browsable(false)] public bool IsCurrentCellInEditMode { get { return this.editingControl != null || this.dataGridViewState1[DATAGRIDVIEWSTATE1_currentCellInEditMode]; } } /// // Only used in bound scenarios, when binding to a IEditableObject [Browsable(false)] public bool IsCurrentRowDirty { get { if (!this.VirtualMode) { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedRowChanged] || this.IsCurrentCellDirty; } else { QuestionEventArgs qe = new QuestionEventArgs(this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedRowChanged] || this.IsCurrentCellDirty); OnRowDirtyStateNeeded(qe); return qe.Response; } } } internal bool IsCurrentRowDirtyInternal { set { if (value != this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedRowChanged]) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedRowChanged] = value; if (this.RowHeadersVisible && this.ShowEditingIcon && this.ptCurrentCell.Y >= 0) { // Force the pencil to appear in the row header InvalidateCellPrivate(-1, this.ptCurrentCell.Y); } } } } private bool IsEscapeKeyEffective { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_trackColResize] || this.dataGridViewOper[DATAGRIDVIEWOPER_trackRowResize] || this.dataGridViewOper[DATAGRIDVIEWOPER_trackColHeadersResize] || this.dataGridViewOper[DATAGRIDVIEWOPER_trackRowHeadersResize] || this.dataGridViewOper[DATAGRIDVIEWOPER_trackColRelocation] || this.IsCurrentCellDirty || ((this.VirtualMode || this.DataSource != null) && this.IsCurrentRowDirty) || (this.EditMode != DataGridViewEditMode.EditOnEnter && this.editingControl != null || this.dataGridViewState1[DATAGRIDVIEWSTATE1_newRowEdited]); } } private bool IsMinimized { get { Form parentForm = this.TopLevelControlInternal as Form; return parentForm != null && parentForm.WindowState == FormWindowState.Minimized; } } internal bool IsRestricted { get { if (!this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestrictedChecked]) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestricted] = false; try { IntSecurity.AllWindows.Demand(); } catch (SecurityException) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestricted] = true; } catch { this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestricted] = true; // To be on the safe side this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestrictedChecked] = true; throw; } this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestrictedChecked] = true; } return this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestricted]; } } private bool IsSharedCellReadOnly(DataGridViewCell dataGridViewCell, int rowIndex) { Debug.Assert(dataGridViewCell != null); Debug.Assert(rowIndex >= 0); DataGridViewElementStates rowState = this.Rows.GetRowState(rowIndex); return this.ReadOnly || (rowState & DataGridViewElementStates.ReadOnly) != 0 || (dataGridViewCell.OwningColumn != null && dataGridViewCell.OwningColumn.ReadOnly) || dataGridViewCell.StateIncludes(DataGridViewElementStates.ReadOnly); } internal bool IsSharedCellSelected(DataGridViewCell dataGridViewCell, int rowIndex) { Debug.Assert(dataGridViewCell != null); Debug.Assert(rowIndex >= 0); DataGridViewElementStates rowState = this.Rows.GetRowState(rowIndex); return (rowState & DataGridViewElementStates.Selected) != 0 || (dataGridViewCell.OwningColumn != null && dataGridViewCell.OwningColumn.Selected) || dataGridViewCell.StateIncludes(DataGridViewElementStates.Selected); } internal bool IsSharedCellVisible(DataGridViewCell dataGridViewCell, int rowIndex) { Debug.Assert(dataGridViewCell != null); Debug.Assert(rowIndex >= 0); DataGridViewElementStates rowState = this.Rows.GetRowState(rowIndex); return (rowState & DataGridViewElementStates.Visible) != 0 && (dataGridViewCell.OwningColumn != null && dataGridViewCell.OwningColumn.Visible); } internal LayoutData LayoutInfo { get { if (this.layout.dirty && this.IsHandleCreated) { PerformLayoutPrivate(false /*useRowShortcut*/, true /*computeVisibleRows*/, false /*invalidInAdjustFillingColumns*/, false /*repositionEditingControl*/); } return this.layout; } } internal Point MouseDownCellAddress { get { return this.ptMouseDownCell; } } /// [ SRCategory(SR.CatBehavior), DefaultValue(true), SRDescription(SR.DataGridView_MultiSelectDescr) ] public bool MultiSelect { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_multiSelect]; } set { if (this.MultiSelect != value) { ClearSelection(); this.dataGridViewState1[DATAGRIDVIEWSTATE1_multiSelect] = value; OnMultiSelectChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnMultiSelectChangedDescr) ] public event EventHandler MultiSelectChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWMULTISELECTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWMULTISELECTCHANGED, value); } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int NewRowIndex { get { return this.newRowIndex; } } internal bool NoDimensionChangeAllowed { get { return this.noDimensionChangeCount > 0; } } private int NoSelectionChangeCount { get { return this.noSelectionChangeCount; } set { Debug.Assert(value >= 0); this.noSelectionChangeCount = value; if (value == 0) { FlushSelectionChanged(); } } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public new Padding Padding { get { return base.Padding; } set { base.Padding = value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public new event EventHandler PaddingChanged { add { base.PaddingChanged += value; } remove { base.PaddingChanged -= value; } } internal DataGridViewCellStyle PlaceholderCellStyle { get { if (this.placeholderCellStyle == null) { this.placeholderCellStyle = new DataGridViewCellStyle(); } return this.placeholderCellStyle; } } /// [ Browsable(true), DefaultValue(false), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_ReadOnlyDescr) ] public bool ReadOnly { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_readOnly]; } set { if (value != this.dataGridViewState1[DATAGRIDVIEWSTATE1_readOnly]) { if (value && this.ptCurrentCell.X != -1 && this.IsCurrentCellInEditMode) { // Current cell becomes read-only. Exit editing mode. if (!EndEdit(DataGridViewDataErrorContexts.Parsing | DataGridViewDataErrorContexts.Commit, DataGridViewValidateCellInternal.Always /*validateCell*/, false /*fireCellLeave*/, false /*fireCellEnter*/, false /*fireRowLeave*/, false /*fireRowEnter*/, false /*fireLeave*/, true /*keepFocus*/, false /*resetCurrentCell*/, false /*resetAnchorCell*/)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CommitFailedCannotCompleteOperation)); } } this.dataGridViewState1[DATAGRIDVIEWSTATE1_readOnly] = value; if (value) { try { this.dataGridViewOper[DATAGRIDVIEWOPER_inReadOnlyChange] = true; for (int columnIndex = 0; columnIndex < this.Columns.Count; columnIndex++) { SetReadOnlyColumnCore(columnIndex, false); } int rowCount = this.Rows.Count; for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { SetReadOnlyRowCore(rowIndex, false); } } finally { this.dataGridViewOper[DATAGRIDVIEWOPER_inReadOnlyChange] = false; } } #if DEBUG else { Debug.Assert(this.individualReadOnlyCells.Count == 0); for (int columnIndex = 0; columnIndex < this.Columns.Count; columnIndex++) { Debug.Assert(this.Columns[columnIndex].ReadOnly == false); } int rowCount = this.Rows.Count; for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { Debug.Assert((this.Rows.GetRowState(rowIndex) & DataGridViewElementStates.ReadOnly) == 0); } } #endif OnReadOnlyChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnReadOnlyChangedDescr) ] public event EventHandler ReadOnlyChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWREADONLYCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWREADONLYCHANGED, value); } } private void ResetCurrentCell() { if (this.ptCurrentCell.X != -1 && !SetCurrentCellAddressCore(-1, -1, true /*setAnchorCellAddress*/, true /*validateCurrentCell*/, false /*throughMouseClick*/)) { // Edited value couldn't be committed or aborted throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } } internal bool ResizingOperationAboutToStart { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_resizingOperationAboutToStart]; } } internal bool RightToLeftInternal { get { if (this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftValid]) { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftMode]; } this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftMode] = (this.RightToLeft == RightToLeft.Yes); this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftValid] = true; return this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftMode]; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Advanced), DefaultValue(0) ] public int RowCount { get { return this.Rows.Count; } set { if (this.AllowUserToAddRowsInternal) { if (value < 1) { throw new ArgumentOutOfRangeException("RowCount", SR.GetString(SR.InvalidLowBoundArgumentEx, "RowCount", value.ToString(CultureInfo.CurrentCulture), (1).ToString(CultureInfo.CurrentCulture))); } } else { if (value < 0) { throw new ArgumentOutOfRangeException("RowCount", SR.GetString(SR.InvalidLowBoundArgumentEx, "RowCount", value.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture))); } } if (this.DataSource != null) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotSetRowCountOnDataBoundDataGridView)); } if (value != this.Rows.Count) { if (value == 0) { // Total removal of the rows. this.Rows.Clear(); } else if (value < this.Rows.Count) { // Some rows need to be removed, from the tail of the rows collection while (value < this.Rows.Count) { int currentRowCount = this.Rows.Count; this.Rows.RemoveAt(currentRowCount - (this.AllowUserToAddRowsInternal ? 2 : 1)); if (this.Rows.Count >= currentRowCount) { // Row removal failed. We stop the loop. break; } } } else { // Some rows need to be appened. if (this.Columns.Count == 0) { // There are no columns yet, we simply create a single DataGridViewTextBoxColumn. DataGridViewTextBoxColumn dataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); this.Columns.Add(dataGridViewTextBoxColumn); } int rowsToAdd = value - this.Rows.Count; if (rowsToAdd > 0) { this.Rows.Add(rowsToAdd); } } } } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_RowHeadersBorderStyleDescr), Browsable(true), DefaultValue(DataGridViewHeaderBorderStyle.Raised) ] public DataGridViewHeaderBorderStyle RowHeadersBorderStyle { get { switch (this.advancedRowHeadersBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.NotSet: return DataGridViewHeaderBorderStyle.Custom; case DataGridViewAdvancedCellBorderStyle.None: return DataGridViewHeaderBorderStyle.None; case DataGridViewAdvancedCellBorderStyle.Single: return DataGridViewHeaderBorderStyle.Single; case DataGridViewAdvancedCellBorderStyle.InsetDouble: return DataGridViewHeaderBorderStyle.Sunken; case DataGridViewAdvancedCellBorderStyle.OutsetPartial: return DataGridViewHeaderBorderStyle.Raised; default: return DataGridViewHeaderBorderStyle.Custom; } } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewHeaderBorderStyle.Custom, (int)DataGridViewHeaderBorderStyle.None)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewHeaderBorderStyle)); } if (value != this.RowHeadersBorderStyle) { if (value == DataGridViewHeaderBorderStyle.Custom) { throw new ArgumentException(SR.GetString(SR.DataGridView_CustomCellBorderStyleInvalid, "RowHeadersBorderStyle")); } this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = true; try { switch (value) { case DataGridViewHeaderBorderStyle.Single: this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single; break; case DataGridViewHeaderBorderStyle.Raised: this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.OutsetPartial; break; case DataGridViewHeaderBorderStyle.Sunken: this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.InsetDouble; break; case DataGridViewHeaderBorderStyle.None: this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; break; } } finally { this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = false; } OnRowHeadersBorderStyleChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowHeadersBorderStyleChangedDescr) ] public event EventHandler RowHeadersBorderStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERSBORDERSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERSBORDERSTYLECHANGED, value); } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_RowHeadersDefaultCellStyleDescr), AmbientValue(null) ] public DataGridViewCellStyle RowHeadersDefaultCellStyle { get { if (this.rowHeadersDefaultCellStyle == null) { this.rowHeadersDefaultCellStyle = this.DefaultRowHeadersDefaultCellStyle; } return this.rowHeadersDefaultCellStyle; } set { DataGridViewCellStyle cs = this.RowHeadersDefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.RowHeaders); this.rowHeadersDefaultCellStyle = value; if (value != null) { this.rowHeadersDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.RowHeaders); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.RowHeadersDefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnRowHeadersDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewRowHeadersDefaultCellStyleChangedDescr) ] public event EventHandler RowHeadersDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERSDEFAULTCELLSTYLECHANGED, value); } } /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(true), SRDescription(SR.DataGridViewRowHeadersVisibleDescr) ] public bool RowHeadersVisible { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_rowHeadersVisible]; } set { if (this.RowHeadersVisible != value) { if (!value && (this.autoSizeRowsMode == DataGridViewAutoSizeRowsMode.AllHeaders || this.autoSizeRowsMode == DataGridViewAutoSizeRowsMode.DisplayedHeaders)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_RowHeadersCannotBeInvisible)); } using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.RowHeadersVisible)) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_rowHeadersVisible] = value; this.layout.RowHeadersVisible = value; this.displayedBandsInfo.EnsureDirtyState(); if (!this.AutoSize) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); } InvalidateInside(); OnRowHeadersGlobalAutoSize(value /*expandingRows*/); } } } } ////// Gets or sets a value indicating whether the dataGridView's row headers are /// visible. /// ///[ SRCategory(SR.CatLayout), Localizable(true), SRDescription(SR.DataGridView_RowHeadersWidthDescr) ] public int RowHeadersWidth { get { return this.rowHeadersWidth; } set { if (value < minimumRowHeadersWidth) { throw new ArgumentOutOfRangeException("RowHeadersWidth", SR.GetString(SR.InvalidLowBoundArgumentEx, "RowHeadersWidth", (value).ToString(CultureInfo.CurrentCulture), (minimumRowHeadersWidth).ToString(CultureInfo.CurrentCulture))); } if (value > maxHeadersThickness) { throw new ArgumentOutOfRangeException("RowHeadersWidth", SR.GetString(SR.InvalidHighBoundArgumentEx, "RowHeadersWidth", (value).ToString(CultureInfo.CurrentCulture), (maxHeadersThickness).ToString(CultureInfo.CurrentCulture))); } if (this.RowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.EnableResizing && this.RowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.DisableResizing) { this.cachedRowHeadersWidth = value; } else if (this.rowHeadersWidth != value) { this.RowHeadersWidthInternal = value; } } } private int RowHeadersWidthInternal { set { using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.RowHeadersWidth)) { Debug.Assert(this.rowHeadersWidth != value); Debug.Assert(value >= minimumRowHeadersWidth); this.rowHeadersWidth = value; if (this.AutoSize) { InvalidateInside(); } else { if (this.layout.RowHeadersVisible) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); InvalidateInside(); } } OnRowHeadersWidthChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewRowHeadersWidthChangedDescr) ] public event EventHandler RowHeadersWidthChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERSWIDTHCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERSWIDTHCHANGED, value); } } private bool ShouldSerializeRowHeadersWidth() { return (this.rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.EnableResizing || this.rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.DisableResizing) && defaultRowHeadersWidth != this.RowHeadersWidth; } /// /// /// [ DefaultValue(DataGridViewRowHeadersWidthSizeMode.EnableResizing), RefreshProperties(RefreshProperties.All), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_RowHeadersWidthSizeModeDescr) ] public DataGridViewRowHeadersWidthSizeMode RowHeadersWidthSizeMode { get { return this.rowHeadersWidthSizeMode; } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewRowHeadersWidthSizeMode.EnableResizing, (int)DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewRowHeadersWidthSizeMode)); } if (this.rowHeadersWidthSizeMode != value) { /*if (value != DataGridViewRowHeadersWidthSizeMode.EnableResizing && * value != DataGridViewRowHeadersWidthSizeMode.DisableResizing && * !this.RowHeadersVisible) { We intentionally don't throw an error because of designer code spit order. }*/ DataGridViewAutoSizeModeEventArgs dgvasme = new DataGridViewAutoSizeModeEventArgs(this.rowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.EnableResizing && this.rowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.DisableResizing); this.rowHeadersWidthSizeMode = value; OnRowHeadersWidthSizeModeChanged(dgvasme); } } } ////// Gets or sets a value that determines the behavior for adjusting the row headers width. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowHeadersWidthSizeModeChangedDescr) ] public event DataGridViewAutoSizeModeEventHandler RowHeadersWidthSizeModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERSWIDTHSIZEMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERSWIDTHSIZEMODECHANGED, value); } } /// [ Browsable(false) ] public DataGridViewRowCollection Rows { get { if (this.dataGridViewRows == null) { this.dataGridViewRows = CreateRowsInstance(); } return this.dataGridViewRows; } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_RowsDefaultCellStyleDescr) ] public DataGridViewCellStyle RowsDefaultCellStyle { get { if (this.rowsDefaultCellStyle == null) { this.rowsDefaultCellStyle = new DataGridViewCellStyle(); this.rowsDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.Rows); } return this.rowsDefaultCellStyle; } set { DataGridViewCellStyle cs = this.RowsDefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.Rows); this.rowsDefaultCellStyle = value; if (value != null) { this.rowsDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.Rows); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.RowsDefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnRowsDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewRowsDefaultCellStyleChangedDescr) ] public event EventHandler RowsDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWSDEFAULTCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatAppearance), Browsable(true), SRDescription(SR.DataGridView_RowTemplateDescr), DesignerSerializationVisibility(DesignerSerializationVisibility.Content) ] public DataGridViewRow RowTemplate { get { if (this.rowTemplate == null) { this.rowTemplate = new DataGridViewRow(); } return this.rowTemplate; } set { DataGridViewRow dataGridViewRow = value; if (dataGridViewRow != null) { if (dataGridViewRow.DataGridView != null) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_RowAlreadyBelongsToDataGridView)); } //if (dataGridViewRow.Selected) //{ // throw new InvalidOperationException(SR.GetString(SR.DataGridView_RowTemplateCannotBeSelected)); //} } this.rowTemplate = dataGridViewRow; } } private bool ShouldSerializeRowTemplate() { return this.rowTemplate != null; } internal DataGridViewRow RowTemplateClone { get { DataGridViewRow rowTemplateClone = (DataGridViewRow) this.RowTemplate.Clone(); CompleteCellsCollection(rowTemplateClone); return rowTemplateClone; } } /// /// /// Possible return values are given by the ScrollBars enumeration. /// [ DefaultValue(ScrollBars.Both), Localizable(true), SRCategory(SR.CatLayout), SRDescription(SR.DataGridView_ScrollBarsDescr) ] public ScrollBars ScrollBars { get { return this.scrollBars; } set { // Sequential enum. Valid values are 0x0 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)ScrollBars.None, (int)ScrollBars.Both)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(ScrollBars)); } if (this.scrollBars != value) { using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.ScrollBars)) { // Before changing the value of this.scrollBars, we scroll to the top-left cell to // avoid inconsitent state of scrollbars. DataGridViewColumn dataGridViewColumn = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); int firstVisibleRowIndex = this.Rows.GetFirstRow(DataGridViewElementStates.Visible); if (dataGridViewColumn != null && firstVisibleRowIndex != -1) { if (!ScrollIntoView(dataGridViewColumn.Index, firstVisibleRowIndex, false)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } } Debug.Assert(this.HorizontalOffset == 0); Debug.Assert(this.VerticalOffset == 0); this.scrollBars = value; if (!this.AutoSize) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); } Invalidate(); } } } } ///[ Browsable(false) ] public DataGridViewSelectedCellCollection SelectedCells { [ SuppressMessage("Microsoft.Performance", "CA1817:DoNotCallPropertiesThatCloneValuesInLoops"), // not legitimate SuppressMessage("Microsoft.Performance", "CA1808:AvoidCallsThatBoxValueTypes") // consider using generics instead of DataGridViewIntLinkedList ] get { DataGridViewSelectedCellCollection stcc = new DataGridViewSelectedCellCollection(); switch (this.SelectionMode) { case DataGridViewSelectionMode.CellSelect: { // Note: If we change the design and decide that SelectAll() should use band selection, // we need to add those to the selected cells. stcc.AddCellLinkedList(this.individualSelectedCells); break; } case DataGridViewSelectionMode.FullColumnSelect: case DataGridViewSelectionMode.ColumnHeaderSelect: { foreach (int columnIndex in this.selectedBandIndexes) { foreach (DataGridViewRow dataGridViewRow in this.Rows) // unshares all rows! { stcc.Add(dataGridViewRow.Cells[columnIndex]); } } if (this.SelectionMode == DataGridViewSelectionMode.ColumnHeaderSelect) { stcc.AddCellLinkedList(this.individualSelectedCells); } break; } case DataGridViewSelectionMode.FullRowSelect: case DataGridViewSelectionMode.RowHeaderSelect: { foreach (int rowIndex in this.selectedBandIndexes) { DataGridViewRow dataGridViewRow = (DataGridViewRow) this.Rows[rowIndex]; // unshares the selected row foreach (DataGridViewCell dataGridViewCell in dataGridViewRow.Cells) { stcc.Add(dataGridViewCell); } } if (this.SelectionMode == DataGridViewSelectionMode.RowHeaderSelect) { stcc.AddCellLinkedList(this.individualSelectedCells); } break; } } return stcc; } } /// [ Browsable(false) ] public DataGridViewSelectedColumnCollection SelectedColumns { [ SuppressMessage("Microsoft.Performance", "CA1808:AvoidCallsThatBoxValueTypes") // consider using generics instead of DataGridViewIntLinkedList ] get { DataGridViewSelectedColumnCollection strc = new DataGridViewSelectedColumnCollection(); switch (this.SelectionMode) { case DataGridViewSelectionMode.CellSelect: case DataGridViewSelectionMode.FullRowSelect: case DataGridViewSelectionMode.RowHeaderSelect: break; case DataGridViewSelectionMode.FullColumnSelect: case DataGridViewSelectionMode.ColumnHeaderSelect: foreach (int columnIndex in this.selectedBandIndexes) { strc.Add(this.Columns[columnIndex]); } break; } return strc; } } /// [ Browsable(false), ] public DataGridViewSelectedRowCollection SelectedRows { [ SuppressMessage("Microsoft.Performance", "CA1808:AvoidCallsThatBoxValueTypes"), // using specialized DataGridViewIntLinkedList class instead of generics SuppressMessage("Microsoft.Performance", "CA1817:DoNotCallPropertiesThatCloneValuesInLoops") // not legitimate ] get { DataGridViewSelectedRowCollection strc = new DataGridViewSelectedRowCollection(); switch (this.SelectionMode) { case DataGridViewSelectionMode.CellSelect: case DataGridViewSelectionMode.FullColumnSelect: case DataGridViewSelectionMode.ColumnHeaderSelect: break; case DataGridViewSelectionMode.FullRowSelect: case DataGridViewSelectionMode.RowHeaderSelect: foreach (int rowIndex in this.selectedBandIndexes) { strc.Add((DataGridViewRow) this.Rows[rowIndex]); // unshares the selected row } break; } return strc; } } /// [ Browsable(true), SRCategory(SR.CatBehavior), DefaultValue(DataGridViewSelectionMode.RowHeaderSelect), SRDescription(SR.DataGridView_SelectionModeDescr) ] public DataGridViewSelectionMode SelectionMode { get { return this.selectionMode; } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewSelectionMode.CellSelect, (int)DataGridViewSelectionMode.ColumnHeaderSelect)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewSelectionMode)); } if (this.SelectionMode != value) { if (!this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing] && (value == DataGridViewSelectionMode.FullColumnSelect || value == DataGridViewSelectionMode.ColumnHeaderSelect)) { foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.SortMode == DataGridViewColumnSortMode.Automatic) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_SelectionModeAndSortModeClash, (value).ToString())); } } } ClearSelection(); this.selectionMode = value; } } } /// [ DefaultValue(true), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ShowCellErrorsDescr) ] public bool ShowCellErrors { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_showCellErrors]; } set { if (this.ShowCellErrors != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_showCellErrors] = value; // Put this into OnShowCellErrorsChanged if created. if (this.IsHandleCreated && !this.DesignMode) { if (value && !this.ShowRowErrors && !this.ShowCellToolTips) { // the tool tip hasn't yet been activated // activate it now this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption)); } if (!value && !this.ShowRowErrors && !this.ShowCellToolTips) { // there is no reason to keep the tool tip activated // deactivate it this.toolTipCaption = String.Empty; this.toolTipControl.Activate(false /*activate*/); } if (!value && (this.ShowRowErrors || this.ShowCellToolTips)) { // reset the tool tip this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption)); } // Some autosizing may have to be applied since the potential presence of error icons influences the preferred sizes. OnGlobalAutoSize(); } if (!this.layout.dirty && !this.DesignMode) { this.Invalidate(Rectangle.Union(this.layout.Data, this.layout.ColumnHeaders)); this.Invalidate(this.layout.TopLeftHeader); } } } } /// [ DefaultValue(true), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ShowCellToolTipsDescr) ] public bool ShowCellToolTips { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_showCellToolTips]; } set { if (this.ShowCellToolTips != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_showCellToolTips] = value; if (this.IsHandleCreated && !this.DesignMode) { if (value && !this.ShowRowErrors && !this.ShowCellErrors) { // the tool tip hasn't yet been activated // activate it now this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption) /*activate*/); } if (!value && !this.ShowRowErrors && !this.ShowCellErrors) { // there is no reason to keep the tool tip activated // deactivate it this.toolTipCaption = String.Empty; this.toolTipControl.Activate(false /*activate*/); } if (!value && (this.ShowRowErrors || this.ShowCellErrors)) { bool activate = !String.IsNullOrEmpty(this.toolTipCaption); Point mouseCoord = System.Windows.Forms.Control.MousePosition; activate &= this.ClientRectangle.Contains(PointToClient(mouseCoord)); // reset the tool tip this.toolTipControl.Activate(activate); } } if (!this.layout.dirty && !this.DesignMode) { Invalidate(this.layout.Data); } } } } /// [ DefaultValue(true), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ShowEditingIconDescr) ] public bool ShowEditingIcon { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_showEditingIcon]; } set { if (this.ShowEditingIcon != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_showEditingIcon] = value; // invalidate the row header to pick up the new ShowEditingIcon value if (this.RowHeadersVisible) { if (this.VirtualMode || this.DataSource != null) { if (this.IsCurrentRowDirty) { Debug.Assert(this.ptCurrentCell.Y >= 0); InvalidateCellPrivate(-1, this.ptCurrentCell.Y); } } else { if (this.IsCurrentCellDirty) { Debug.Assert(this.ptCurrentCell.Y >= 0); InvalidateCellPrivate(-1, this.ptCurrentCell.Y); } } } } } } /// [ DefaultValue(true), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ShowRowErrorsDescr) ] public bool ShowRowErrors { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_showRowErrors]; } set { if (this.ShowRowErrors != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_showRowErrors] = value; if (this.IsHandleCreated && !this.DesignMode) { if (value && !this.ShowCellErrors && !this.ShowCellToolTips) { // the tool tip hasn't yet been activated // activate it now this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption)); } if (!value && !this.ShowCellErrors && !this.ShowCellToolTips) { // there is no reason to keep the tool tip activated // deactivate it this.toolTipCaption = String.Empty; this.toolTipControl.Activate(false /*activate*/); } if (!value && (this.ShowCellErrors || this.ShowCellToolTips)) { // reset the tool tip this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption)); } } if (!this.layout.dirty && !this.DesignMode) { Invalidate(this.layout.RowHeaders); } } } } internal bool SingleHorizontalBorderAdded { get { return !this.layout.ColumnHeadersVisible && (this.AdvancedCellBorderStyle.All == DataGridViewAdvancedCellBorderStyle.Single || this.CellBorderStyle == DataGridViewCellBorderStyle.SingleHorizontal); } } internal bool SingleVerticalBorderAdded { get { return !this.layout.RowHeadersVisible && (this.AdvancedCellBorderStyle.All == DataGridViewAdvancedCellBorderStyle.Single || this.CellBorderStyle == DataGridViewCellBorderStyle.SingleVertical); } } /// [ Browsable(false) ] public DataGridViewColumn SortedColumn { get { return this.sortedColumn; } } /// [ Browsable(false) ] public SortOrder SortOrder { get { return this.sortOrder; } } /// /// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_StandardTabDescr) ] public bool StandardTab { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_standardTab]; } set { if (this.dataGridViewState1[DATAGRIDVIEWSTATE1_standardTab] != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_standardTab] = value; //OnStandardTabChanged(EventArgs.Empty); } } } ////// ///[ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), Bindable(false) ] public override string Text { get { return base.Text; } set { base.Text = value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler TextChanged { add { base.TextChanged += value; } remove { base.TextChanged -= value; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), SuppressMessage("Microsoft.Design", "CA1023:IndexersShouldNotBeMultidimensional") ] public DataGridViewCell this[int columnIndex, int rowIndex] { get { DataGridViewRow row = this.Rows[rowIndex]; return row.Cells[columnIndex]; } set { DataGridViewRow row = this.Rows[rowIndex]; row.Cells[columnIndex] = value; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), SuppressMessage("Microsoft.Design", "CA1023:IndexersShouldNotBeMultidimensional") ] public DataGridViewCell this[string columnName, int rowIndex] { get { DataGridViewRow row = this.Rows[rowIndex]; return row.Cells[columnName]; } set { DataGridViewRow row = this.Rows[rowIndex]; row.Cells[columnName] = value; } } private string ToolTipPrivate { get { return this.toolTipCaption; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public DataGridViewHeaderCell TopLeftHeaderCell { get { if (this.topLeftHeaderCell == null) { this.TopLeftHeaderCell = new DataGridViewTopLeftHeaderCell(); } return this.topLeftHeaderCell; } set { if (this.topLeftHeaderCell != value) { if (this.topLeftHeaderCell != null) { // Detach existing header cell this.topLeftHeaderCell.DataGridViewInternal = null; } this.topLeftHeaderCell = value; if (value != null) { this.topLeftHeaderCell.DataGridViewInternal = this; } if (this.ColumnHeadersVisible && this.RowHeadersVisible) { // If headers (rows or columns) are autosized, then this.RowHeadersWidth or this.ColumnHeadersHeight // must be updated based on new cell preferred size OnColumnHeadersGlobalAutoSize(); // In all cases, the top left cell needs to repaint Invalidate(new Rectangle(this.layout.Inside.X, this.layout.Inside.Y, this.RowHeadersWidth, this.ColumnHeadersHeight)); } } } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public Cursor UserSetCursor { get { if (this.dataGridViewState1[DATAGRIDVIEWSTATE1_customCursorSet]) { return this.oldCursor; } else { return this.Cursor; } } } internal int VerticalOffset { get { return this.verticalOffset; } set { if (value < 0) { value = 0; } int totalVisibleFrozenHeight = this.Rows.GetRowsHeight(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); int fittingTrailingScrollingRowsHeight = ComputeHeightOfFittingTrailingScrollingRows(totalVisibleFrozenHeight); if (value > this.vertScrollBar.Maximum - fittingTrailingScrollingRowsHeight) { value = this.vertScrollBar.Maximum - fittingTrailingScrollingRowsHeight; } if (value == this.verticalOffset) { return; } int change = value - this.verticalOffset; if (this.vertScrollBar.Enabled) { this.vertScrollBar.Value = value; } ScrollRowsByHeight(change); // calculate how many rows need to be scrolled based on 'change' } } /// protected ScrollBar VerticalScrollBar { get { return this.vertScrollBar; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int VerticalScrollingOffset { get { return this.verticalOffset; } } private System.Windows.Forms.Timer VertScrollTimer { get { if (this.vertScrollTimer == null) { this.vertScrollTimer = new System.Windows.Forms.Timer(); this.vertScrollTimer.Tick += new System.EventHandler(VertScrollTimer_Tick); } return this.vertScrollTimer; } } /// /// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridViewVirtualModeDescr) ] public bool VirtualMode { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_virtualMode]; } set { if (this.dataGridViewState1[DATAGRIDVIEWSTATE1_virtualMode] != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_virtualMode] = value; InvalidateRowHeights(); //OnVirtualModeChanged(EventArgs.Empty); } } } private bool VisibleCellExists { get { if (null == this.Columns.GetFirstColumn(DataGridViewElementStates.Visible)) { return false; } return -1 != this.Rows.GetFirstRow(DataGridViewElementStates.Visible); } } // Events start here ////// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewAutoSizeColumnModeChangedDescr) ] public event DataGridViewAutoSizeColumnModeEventHandler AutoSizeColumnModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWAUTOSIZECOLUMNMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWAUTOSIZECOLUMNMODECHANGED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_CancelRowEditDescr) ] public event QuestionEventHandler CancelRowEdit { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCANCELROWEDIT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCANCELROWEDIT, value); } } /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_CellBeginEditDescr) ] public event DataGridViewCellCancelEventHandler CellBeginEdit { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLBEGINEDIT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLBEGINEDIT, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellClickDescr) ] public event DataGridViewCellEventHandler CellClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellContentClick) ] public event DataGridViewCellEventHandler CellContentClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCONTENTCLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCONTENTCLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellContentDoubleClick) ] public event DataGridViewCellEventHandler CellContentDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCONTENTDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCONTENTDOUBLECLICK, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_CellContextMenuStripChanged), EditorBrowsable(EditorBrowsableState.Advanced) ] public event DataGridViewCellEventHandler CellContextMenuStripChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPCHANGED, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_CellContextMenuStripNeeded), EditorBrowsable(EditorBrowsableState.Advanced) ] public event DataGridViewCellContextMenuStripNeededEventHandler CellContextMenuStripNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPNEEDED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellDoubleClickDescr) ] public event DataGridViewCellEventHandler CellDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLDOUBLECLICK, value); } } /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_CellEndEditDescr) ] public event DataGridViewCellEventHandler CellEndEdit { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLENDEDIT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLENDEDIT, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_CellEnterDescr) ] public event DataGridViewCellEventHandler CellEnter { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLENTER, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLENTER, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellErrorTextChangedDescr) ] public event DataGridViewCellEventHandler CellErrorTextChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLERRORTEXTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLERRORTEXTCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_CellErrorTextNeededDescr) ] public event DataGridViewCellErrorTextNeededEventHandler CellErrorTextNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLERRORTEXTNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLERRORTEXTNEEDED, value); } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_CellFormattingDescr) ] public event DataGridViewCellFormattingEventHandler CellFormatting { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLFORMATTING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLFORMATTING, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_CellLeaveDescr) ] public event DataGridViewCellEventHandler CellLeave { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLLEAVE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLLEAVE, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseClickDescr) ] public event DataGridViewCellMouseEventHandler CellMouseClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSECLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseDoubleClickDescr) ] public event DataGridViewCellMouseEventHandler CellMouseDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEDOUBLECLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseDownDescr) ] public event DataGridViewCellMouseEventHandler CellMouseDown { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEDOWN, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEDOWN, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseEnterDescr) ] public event DataGridViewCellEventHandler CellMouseEnter { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEENTER, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEENTER, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseLeaveDescr) ] public event DataGridViewCellEventHandler CellMouseLeave { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSELEAVE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSELEAVE, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseMoveDescr) ] public event DataGridViewCellMouseEventHandler CellMouseMove { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEMOVE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEMOVE, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseUpDescr) ] public event DataGridViewCellMouseEventHandler CellMouseUp { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEUP, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEUP, value); } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_CellPaintingDescr) ] public event DataGridViewCellPaintingEventHandler CellPainting { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLPAINTING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLPAINTING, value); } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_CellParsingDescr) ] public event DataGridViewCellParsingEventHandler CellParsing { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLPARSING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLPARSING, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_CellStateChangedDescr) ] public event DataGridViewCellStateChangedEventHandler CellStateChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLSTATECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLSTATECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellStyleChangedDescr) ] public event DataGridViewCellEventHandler CellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellStyleContentChangedDescr) ] public event DataGridViewCellStyleContentChangedEventHandler CellStyleContentChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLSTYLECONTENTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLSTYLECONTENTCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellToolTipTextChangedDescr) ] public event DataGridViewCellEventHandler CellToolTipTextChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTCHANGED, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_CellToolTipTextNeededDescr), EditorBrowsable(EditorBrowsableState.Advanced) ] public event DataGridViewCellToolTipTextNeededEventHandler CellToolTipTextNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTNEEDED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_CellValidatedDescr) ] public event DataGridViewCellEventHandler CellValidated { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALIDATED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALIDATED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_CellValidatingDescr) ] public event DataGridViewCellValidatingEventHandler CellValidating { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALIDATING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALIDATING, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_CellValueChangedDescr) ] public event DataGridViewCellEventHandler CellValueChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALUECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALUECHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_CellValueNeededDescr) ] public event DataGridViewCellValueEventHandler CellValueNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALUENEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALUENEEDED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_CellValuePushedDescr) ] public event DataGridViewCellValueEventHandler CellValuePushed { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALUEPUSHED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALUEPUSHED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_ColumnAddedDescr) ] public event DataGridViewColumnEventHandler ColumnAdded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNADDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNADDED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnContextMenuStripChangedDescr) ] public event DataGridViewColumnEventHandler ColumnContextMenuStripChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNCONTEXTMENUSTRIPCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNCONTEXTMENUSTRIPCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnDataPropertyNameChangedDescr) ] public event DataGridViewColumnEventHandler ColumnDataPropertyNameChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDATAPROPERTYNAMECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDATAPROPERTYNAMECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnDefaultCellStyleChangedDescr) ] public event DataGridViewColumnEventHandler ColumnDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDEFAULTCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnDisplayIndexChangedDescr) ] public event DataGridViewColumnEventHandler ColumnDisplayIndexChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDISPLAYINDEXCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDISPLAYINDEXCHANGED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_ColumnDividerDoubleClickDescr) ] public event DataGridViewColumnDividerDoubleClickEventHandler ColumnDividerDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDIVIDERDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDIVIDERDOUBLECLICK, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnDividerWidthChangedDescr) ] public event DataGridViewColumnEventHandler ColumnDividerWidthChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDIVIDERWIDTHCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDIVIDERWIDTHCHANGED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_ColumnHeaderMouseClickDescr) ] public event DataGridViewCellMouseEventHandler ColumnHeaderMouseClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSECLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_ColumnHeaderMouseDoubleClickDescr) ] public event DataGridViewCellMouseEventHandler ColumnHeaderMouseDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSEDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSEDOUBLECLICK, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnHeaderCellChangedDescr) ] public event DataGridViewColumnEventHandler ColumnHeaderCellChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERCELLCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERCELLCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnMinimumWidthChangedDescr) ] public event DataGridViewColumnEventHandler ColumnMinimumWidthChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNMINIMUMWIDTHCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNMINIMUMWIDTHCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnNameChangedDescr) ] public event DataGridViewColumnEventHandler ColumnNameChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNNAMECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNNAMECHANGED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_ColumnRemovedDescr) ] public event DataGridViewColumnEventHandler ColumnRemoved { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNREMOVED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNREMOVED, value); } } /*/// /// public event EventHandler ColumnsDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNSDEFAULTCELLSTYLECHANGED, value); } }*/ /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridViewColumnSortModeChangedDescr) ] public event DataGridViewColumnEventHandler ColumnSortModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNSORTMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNSORTMODECHANGED, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_ColumnStateChangedDescr) ] public event DataGridViewColumnStateChangedEventHandler ColumnStateChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNSTATECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNSTATECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnToolTipTextChangedDescr) ] public event DataGridViewColumnEventHandler ColumnToolTipTextChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNTOOLTIPTEXTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNTOOLTIPTEXTCHANGED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_ColumnWidthChangedDescr) ] public event DataGridViewColumnEventHandler ColumnWidthChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNWIDTHCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNWIDTHCHANGED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_CurrentCellChangedDescr) ] public event EventHandler CurrentCellChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCURRENTCELLCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCURRENTCELLCHANGED, value); } } /// [ SRCategory(SR.CatBehavior), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_CurrentCellDirtyStateChangedDescr) ] public event EventHandler CurrentCellDirtyStateChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCURRENTCELLDIRTYSTATECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCURRENTCELLDIRTYSTATECHANGED, value); } } /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_DataBindingCompleteDescr) ] public event DataGridViewBindingCompleteEventHandler DataBindingComplete { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDATABINDINGCOMPLETE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDATABINDINGCOMPLETE, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_DataErrorDescr) ] public event DataGridViewDataErrorEventHandler DataError { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDATAERROR, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDATAERROR, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_DefaultValuesNeededDescr) ] public event DataGridViewRowEventHandler DefaultValuesNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDEFAULTVALUESNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDEFAULTVALUESNEEDED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_EditingControlShowingDescr) ] public event DataGridViewEditingControlShowingEventHandler EditingControlShowing { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWEDITINGCONTROLSHOWING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWEDITINGCONTROLSHOWING, value); } } /* /// public event QuestionEventHandler KeepNewRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWKEEPNEWROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWKEEPNEWROW, value); } }*/ /*/// /// public event EventHandler NewRowDiscarded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWNEWROWDISCARDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWNEWROWDISCARDED, value); } }*/ /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_NewRowNeededDescr) ] public event DataGridViewRowEventHandler NewRowNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWNEWROWNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWNEWROWNEEDED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowContextMenuStripChangedDescr) ] public event DataGridViewRowEventHandler RowContextMenuStripChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowContextMenuStripNeededDescr) ] public event DataGridViewRowContextMenuStripNeededEventHandler RowContextMenuStripNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPNEEDED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowDefaultCellStyleChangedDescr) ] public event DataGridViewRowEventHandler RowDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWDEFAULTCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowDirtyStateNeededDescr) ] public event QuestionEventHandler RowDirtyStateNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWDIRTYSTATENEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWDIRTYSTATENEEDED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_RowDividerDoubleClickDescr) ] public event DataGridViewRowDividerDoubleClickEventHandler RowDividerDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWDIVIDERDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWDIVIDERDOUBLECLICK, value); } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_RowDividerHeightChangedDescr) ] public event DataGridViewRowEventHandler RowDividerHeightChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWDIVIDERHEIGHTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWDIVIDERHEIGHTCHANGED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_RowEnterDescr) ] public event DataGridViewCellEventHandler RowEnter { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWENTER, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWENTER, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowErrorTextChangedDescr) ] public event DataGridViewRowEventHandler RowErrorTextChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWERRORTEXTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWERRORTEXTCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowErrorTextNeededDescr) ] public event DataGridViewRowErrorTextNeededEventHandler RowErrorTextNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWERRORTEXTNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWERRORTEXTNEEDED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_RowHeaderMouseClickDescr) ] public event DataGridViewCellMouseEventHandler RowHeaderMouseClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERMOUSECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERMOUSECLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_RowHeaderMouseDoubleClickDescr) ] public event DataGridViewCellMouseEventHandler RowHeaderMouseDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERMOUSEDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERMOUSEDOUBLECLICK, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowHeaderCellChangedDescr) ] public event DataGridViewRowEventHandler RowHeaderCellChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERCELLCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERCELLCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowHeightChangedDescr) ] public event DataGridViewRowEventHandler RowHeightChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEIGHTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEIGHTCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowHeightInfoNeededDescr) ] public event DataGridViewRowHeightInfoNeededEventHandler RowHeightInfoNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEIGHTINFONEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEIGHTINFONEEDED, value); } } internal DataGridViewRowHeightInfoNeededEventArgs RowHeightInfoNeededEventArgs { get { if (this.dgvrhine == null) { this.dgvrhine = new DataGridViewRowHeightInfoNeededEventArgs(); } return this.dgvrhine; } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowHeightInfoPushedDescr) ] public event DataGridViewRowHeightInfoPushedEventHandler RowHeightInfoPushed { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEIGHTINFOPUSHED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEIGHTINFOPUSHED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_RowLeaveDescr) ] public event DataGridViewCellEventHandler RowLeave { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWLEAVE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWLEAVE, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowMinimumHeightChangedDescr) ] public event DataGridViewRowEventHandler RowMinimumHeightChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWMINIMUMHEIGHTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWMINIMUMHEIGHTCHANGED, value); } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_RowPostPaintDescr) ] public event DataGridViewRowPostPaintEventHandler RowPostPaint { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWPOSTPAINT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWPOSTPAINT, value); } } internal DataGridViewRowPostPaintEventArgs RowPostPaintEventArgs { get { if (this.dgvrpope == null) { this.dgvrpope = new DataGridViewRowPostPaintEventArgs(this); } return this.dgvrpope; } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_RowPrePaintDescr) ] public event DataGridViewRowPrePaintEventHandler RowPrePaint { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWPREPAINT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWPREPAINT, value); } } internal DataGridViewRowPrePaintEventArgs RowPrePaintEventArgs { get { if (this.dgvrprpe == null) { this.dgvrprpe = new DataGridViewRowPrePaintEventArgs(this); } return this.dgvrprpe; } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_RowsAddedDescr) ] public event DataGridViewRowsAddedEventHandler RowsAdded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWSADDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWSADDED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_RowsRemovedDescr) ] public event DataGridViewRowsRemovedEventHandler RowsRemoved { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWSREMOVED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWSREMOVED, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_RowStateChangedDescr) ] public event DataGridViewRowStateChangedEventHandler RowStateChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWSTATECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWSTATECHANGED, value); } } /// [ SRCategory(SR.CatBehavior), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowUnsharedDescr) ] public event DataGridViewRowEventHandler RowUnshared { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWUNSHARED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWUNSHARED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_RowValidatedDescr) ] public event DataGridViewCellEventHandler RowValidated { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWVALIDATED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWVALIDATED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_RowValidatingDescr) ] public event DataGridViewCellCancelEventHandler RowValidating { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWVALIDATING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWVALIDATING, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_ScrollDescr) ] public event ScrollEventHandler Scroll { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWSCROLL, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWSCROLL, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_SelectionChangedDescr) ] public event EventHandler SelectionChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWSELECTIONCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWSELECTIONCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_SortCompareDescr) ] public event DataGridViewSortCompareEventHandler SortCompare { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWSORTCOMPARE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWSORTCOMPARE, value); } } /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_SortedDescr) ] public event EventHandler Sorted { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWSORTED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWSORTED, value); } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler StyleChanged { add { base.StyleChanged += value; } remove { base.StyleChanged -= value; } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_UserAddedRowDescr) ] public event DataGridViewRowEventHandler UserAddedRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWUSERADDEDROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWUSERADDEDROW, value); } } /*/// /// public event DataGridViewRowCancelEventHandler UserAddingRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWUSERADDINGROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWUSERADDINGROW, value); } }*/ /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_UserDeletedRowDescr) ] public event DataGridViewRowEventHandler UserDeletedRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWUSERDELETEDROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWUSERDELETEDROW, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_UserDeletingRowDescr) ] public event DataGridViewRowCancelEventHandler UserDeletingRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWUSERDELETINGROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWUSERDELETINGROW, value); } } //////////////////////// // // // ISupportInitialize // // // //////////////////////// [ SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes") // VSWhidbey 405004 ] void ISupportInitialize.BeginInit() { if (this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing]) { throw new InvalidOperationException(SR.GetString(SR.DataGridViewBeginInit)); } this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing] = true; } [ SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes") // VSWhidbey 405004 ] void ISupportInitialize.EndInit() { this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing] = false; foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.Frozen && dataGridViewColumn.Visible && dataGridViewColumn.InheritedAutoSizeMode == DataGridViewAutoSizeColumnMode.Fill) { dataGridViewColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; } } DataGridViewSelectionMode selectionMode = this.SelectionMode; if (selectionMode == DataGridViewSelectionMode.FullColumnSelect || selectionMode == DataGridViewSelectionMode.ColumnHeaderSelect) { foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.SortMode == DataGridViewColumnSortMode.Automatic) { // Resetting SelectionMode to its acceptable default value. We don't want the control to ever end up in an invalid state. this.SelectionMode = defaultSelectionMode; // DataGridViewSelectionMode.RowHeaderSelect throw new InvalidOperationException(SR.GetString(SR.DataGridView_SelectionModeReset, SR.GetString(SR.DataGridView_SelectionModeAndSortModeClash, (selectionMode).ToString()), (defaultSelectionMode).ToString())); } } } } /* INTERNAL ENUMERATIONS */ internal enum DataGridViewHitTestTypeInternal { None, Cell, ColumnHeader, RowHeader, ColumnResizeLeft, ColumnResizeRight, RowResizeTop, RowResizeBottom, FirstColumnHeaderLeft, TopLeftHeader, TopLeftHeaderResizeLeft, TopLeftHeaderResizeRight, TopLeftHeaderResizeTop, TopLeftHeaderResizeBottom, ColumnHeadersResizeBottom, ColumnHeadersResizeTop, RowHeadersResizeRight, RowHeadersResizeLeft, ColumnHeaderLeft, ColumnHeaderRight } internal enum DataGridViewValidateCellInternal { Never, Always, WhenChanged } private enum DataGridViewMouseEvent { Click, DoubleClick, MouseClick, MouseDoubleClick, MouseDown, MouseUp, MouseMove } private struct MouseClickInfo { public MouseButtons button; public long timeStamp; public int x; public int y; public int col; public int row; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms { using System.Text; using System.Runtime.InteropServices; using System.Runtime.Remoting; using System.ComponentModel; using System; using System.Diagnostics.CodeAnalysis; using System.Security; using System.Security.Permissions; using System.Collections; using System.Windows.Forms; using System.Windows.Forms.Design; using System.ComponentModel.Design; using System.Drawing; using System.Windows.Forms.ComponentModel; using System.Windows.Forms.Layout; using System.Globalization; using System.Diagnostics; using System.Windows.Forms.VisualStyles; using Microsoft.Win32; using System.Collections.Specialized; ///[ ComVisible(true), ClassInterface(ClassInterfaceType.AutoDispatch), Designer("System.Windows.Forms.Design.DataGridViewDesigner, " + AssemblyRef.SystemDesign), //DefaultProperty("DataSource"), DefaultEvent("CellContentClick"), ComplexBindingProperties("DataSource", "DataMember"), Docking(DockingBehavior.Ask), Editor("System.Windows.Forms.Design.DataGridViewComponentEditor, " + AssemblyRef.SystemDesign, typeof(ComponentEditor)), SRDescription(SR.DescriptionDataGridView) ] public partial class DataGridView : Control, ISupportInitialize { private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTOADDROWSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTODELETEROWSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTOORDERCOLUMNSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTORESIZECOLUMNSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALLOWUSERTORESIZEROWSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWALTERNATINGROWSDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWAUTOGENERATECOLUMNSCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWAUTOSIZECOLUMNMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWAUTOSIZECOLUMNSMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWAUTOSIZEROWSMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWBACKGROUNDCOLORCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWBORDERSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCANCELROWEDIT = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLBEGINEDIT = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLBORDERSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCONTENTCLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCONTENTDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLENDEDIT = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLENTER = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLERRORTEXTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLERRORTEXTNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLFORMATTING = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLLEAVE = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEDOWN = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEENTER = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSELEAVE = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEMOVE = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLMOUSEUP = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLPAINTING = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLPARSING = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLSTATECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLSTYLECONTENTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALIDATING = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALIDATED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALUECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALUENEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCELLVALUEPUSHED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNADDED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNCONTEXTMENUSTRIPCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDATAPROPERTYNAMECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDISPLAYINDEXCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDIVIDERWIDTHCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERCELLCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNDIVIDERDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSEDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERSBORDERSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERSDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTSIZEMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNMINIMUMWIDTHCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNNAMECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNREMOVED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNSORTMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNSTATECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNTOOLTIPTEXTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCOLUMNWIDTHCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCURRENTCELLCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWCURRENTCELLDIRTYSTATECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWDATABINDINGCOMPLETE = new object(); private static readonly object EVENT_DATAGRIDVIEWDATAERROR = new object(); private static readonly object EVENT_DATAGRIDVIEWDATAMEMBERCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWDATASOURCECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWDEFAULTVALUESNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWEDITINGCONTROLSHOWING = new object(); private static readonly object EVENT_DATAGRIDVIEWEDITMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWGRIDCOLORCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWMULTISELECTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWNEWROWNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWREADONLYCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWDIRTYSTATENEEDED = new Object(); private static readonly object EVENT_DATAGRIDVIEWROWDIVIDERHEIGHTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWENTER = new object(); private static readonly object EVENT_DATAGRIDVIEWROWERRORTEXTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWERRORTEXTNEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERCELLCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWDIVIDERDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERMOUSECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERMOUSEDOUBLECLICK = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERSBORDERSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERSDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERSWIDTHCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEADERSWIDTHSIZEMODECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEIGHTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEIGHTINFONEEDED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWHEIGHTINFOPUSHED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWLEAVE = new object(); private static readonly object EVENT_DATAGRIDVIEWROWMINIMUMHEIGHTCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWPOSTPAINT = new object(); private static readonly object EVENT_DATAGRIDVIEWROWPREPAINT = new object(); private static readonly object EVENT_DATAGRIDVIEWROWSADDED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWSDEFAULTCELLSTYLECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWSREMOVED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWSTATECHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWUNSHARED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWVALIDATED = new object(); private static readonly object EVENT_DATAGRIDVIEWROWVALIDATING = new object(); private static readonly object EVENT_DATAGRIDVIEWSCROLL = new object(); private static readonly object EVENT_DATAGRIDVIEWSELECTIONCHANGED = new object(); private static readonly object EVENT_DATAGRIDVIEWSORTCOMPARE = new object(); private static readonly object EVENT_DATAGRIDVIEWSORTED = new object(); private static readonly object EVENT_DATAGRIDVIEWUSERADDEDROW = new object(); private static readonly object EVENT_DATAGRIDVIEWUSERDELETEDROW = new object(); private static readonly object EVENT_DATAGRIDVIEWUSERDELETINGROW = new object(); private const int DATAGRIDVIEWSTATE1_allowUserToAddRows = 0x00000001; private const int DATAGRIDVIEWSTATE1_allowUserToDeleteRows = 0x00000002; private const int DATAGRIDVIEWSTATE1_allowUserToOrderColumns = 0x00000004; private const int DATAGRIDVIEWSTATE1_columnHeadersVisible = 0x00000008; private const int DATAGRIDVIEWSTATE1_rowHeadersVisible = 0x00000010; private const int DATAGRIDVIEWSTATE1_forwardCharMessage = 0x00000020; private const int DATAGRIDVIEWSTATE1_leavingWithTabKey = 0x00000040; private const int DATAGRIDVIEWSTATE1_multiSelect = 0x00000080; private const int DATAGRIDVIEWSTATE1_ignoringEditingChanges = 0x00000200; private const int DATAGRIDVIEWSTATE1_ambientForeColor = 0x00000400; private const int DATAGRIDVIEWSTATE1_scrolledSinceMouseDown = 0x00000800; private const int DATAGRIDVIEWSTATE1_editingControlHidden = 0x00001000; private const int DATAGRIDVIEWSTATE1_standardTab = 0x00002000; private const int DATAGRIDVIEWSTATE1_editingControlChanging = 0x00004000; private const int DATAGRIDVIEWSTATE1_currentCellInEditMode = 0x00008000; private const int DATAGRIDVIEWSTATE1_virtualMode = 0x00010000; private const int DATAGRIDVIEWSTATE1_editedCellChanged = 0x00020000; private const int DATAGRIDVIEWSTATE1_editedRowChanged = 0x00040000; private const int DATAGRIDVIEWSTATE1_newRowEdited = 0x00080000; private const int DATAGRIDVIEWSTATE1_readOnly = 0x00100000; private const int DATAGRIDVIEWSTATE1_newRowCreatedByEditing = 0x00200000; private const int DATAGRIDVIEWSTATE1_temporarilyResetCurrentCell = 0x00400000; private const int DATAGRIDVIEWSTATE1_autoGenerateColumns = 0x00800000; private const int DATAGRIDVIEWSTATE1_customCursorSet = 0x01000000; private const int DATAGRIDVIEWSTATE1_ambientFont = 0x02000000; private const int DATAGRIDVIEWSTATE1_ambientColumnHeadersFont = 0x04000000; private const int DATAGRIDVIEWSTATE1_ambientRowHeadersFont = 0x08000000; private const int DATAGRIDVIEWSTATE1_isRestrictedChecked = 0x10000000; private const int DATAGRIDVIEWSTATE1_isRestricted = 0x20000000; private const int DATAGRIDVIEWSTATE1_isAutoSized = 0x40000000; // DATAGRIDVIEWSTATE2_ private const int DATAGRIDVIEWSTATE2_showEditingIcon = 0x00000001; private const int DATAGRIDVIEWSTATE2_allowUserToResizeColumns = 0x00000002; private const int DATAGRIDVIEWSTATE2_allowUserToResizeRows = 0x00000004; private const int DATAGRIDVIEWSTATE2_mouseOverRemovedEditingCtrl = 0x00000008; private const int DATAGRIDVIEWSTATE2_mouseOverRemovedEditingPanel = 0x00000010; private const int DATAGRIDVIEWSTATE2_mouseEnterExpected = 0x00000020; private const int DATAGRIDVIEWSTATE2_enableHeadersVisualStyles = 0x00000040; private const int DATAGRIDVIEWSTATE2_showCellErrors = 0x00000080; private const int DATAGRIDVIEWSTATE2_showCellToolTips = 0x00000100; private const int DATAGRIDVIEWSTATE2_showRowErrors = 0x00000200; private const int DATAGRIDVIEWSTATE2_showColumnRelocationInsertion = 0x00000400; private const int DATAGRIDVIEWSTATE2_rightToLeftMode = 0x00000800; private const int DATAGRIDVIEWSTATE2_rightToLeftValid = 0x00001000; private const int DATAGRIDVIEWSTATE2_currentCellWantsInputKey = 0x00002000; private const int DATAGRIDVIEWSTATE2_stopRaisingVerticalScroll = 0x00004000; private const int DATAGRIDVIEWSTATE2_stopRaisingHorizontalScroll = 0x00008000; private const int DATAGRIDVIEWSTATE2_replacedCellSelected = 0x00010000; private const int DATAGRIDVIEWSTATE2_replacedCellReadOnly = 0x00020000; private const int DATAGRIDVIEWSTATE2_raiseSelectionChanged = 0x00040000; private const int DATAGRIDVIEWSTATE2_initializing = 0x00080000; private const int DATAGRIDVIEWSTATE2_autoSizedWithoutHandle = 0x00100000; private const int DATAGRIDVIEWSTATE2_ignoreCursorChange = 0x00200000; private const int DATAGRIDVIEWSTATE2_rowsCollectionClearedInSetCell= 0x00400000; private const int DATAGRIDVIEWSTATE2_nextMouseUpIsDouble = 0x00800000; private const int DATAGRIDVIEWSTATE2_inBindingContextChanged = 0x01000000; private const int DATAGRIDVIEWSTATE2_allowHorizontalScrollbar = 0x02000000; private const int DATAGRIDVIEWSTATE2_usedFillWeightsDirty = 0x04000000; private const int DATAGRIDVIEWSTATE2_messageFromEditingCtrls = 0x08000000; private const int DATAGRIDVIEWSTATE2_cellMouseDownInContentBounds = 0x10000000; private const int DATAGRIDVIEWSTATE2_discardEditingControl = 0x20000000; // DATAGRIDVIEWOPER_ private const int DATAGRIDVIEWOPER_trackColResize = 0x00000001; private const int DATAGRIDVIEWOPER_trackRowResize = 0x00000002; private const int DATAGRIDVIEWOPER_trackColSelect = 0x00000004; private const int DATAGRIDVIEWOPER_trackRowSelect = 0x00000008; private const int DATAGRIDVIEWOPER_trackCellSelect = 0x00000010; private const int DATAGRIDVIEWOPER_trackColRelocation = 0x00000020; private const int DATAGRIDVIEWOPER_inSort = 0x00000040; private const int DATAGRIDVIEWOPER_trackColHeadersResize = 0x00000080; private const int DATAGRIDVIEWOPER_trackRowHeadersResize = 0x00000100; private const int DATAGRIDVIEWOPER_trackMouseMoves = 0x00000200; private const int DATAGRIDVIEWOPER_inRefreshColumns = 0x00000400; private const int DATAGRIDVIEWOPER_inDisplayIndexAdjustments = 0x00000800; private const int DATAGRIDVIEWOPER_lastEditCtrlClickDoubled = 0x00001000; private const int DATAGRIDVIEWOPER_inMouseDown = 0x00002000; private const int DATAGRIDVIEWOPER_inReadOnlyChange = 0x00004000; private const int DATAGRIDVIEWOPER_inCellValidating = 0x00008000; private const int DATAGRIDVIEWOPER_inBorderStyleChange = 0x00010000; private const int DATAGRIDVIEWOPER_inCurrentCellChange = 0x00020000; private const int DATAGRIDVIEWOPER_inAdjustFillingColumns = 0x00040000; private const int DATAGRIDVIEWOPER_inAdjustFillingColumn = 0x00080000; private const int DATAGRIDVIEWOPER_inDispose = 0x00100000; private const int DATAGRIDVIEWOPER_inBeginEdit = 0x00200000; private const int DATAGRIDVIEWOPER_inEndEdit = 0x00400000; private const int DATAGRIDVIEWOPER_resizingOperationAboutToStart = 0x00800000; private static Size DragSize = SystemInformation.DragSize; private const byte DATAGRIDVIEW_columnSizingHotZone = 6; private const byte DATAGRIDVIEW_rowSizingHotZone = 5; private const byte DATAGRIDVIEW_insertionBarWidth = 3; private const byte DATAGRIDVIEW_bulkPaintThreshold = 8; private const string DATAGRIDVIEW_htmlPrefix = "Version:1.0\r\nStartHTML:00000097\r\nEndHTML:{0}\r\nStartFragment:00000133\r\nEndFragment:{1}\r\n"; private const string DATAGRIDVIEW_htmlStartFragment = "\r\n\r\n"; private const string DATAGRIDVIEW_htmlEndFragment = "\r\n\r\n\r\n"; private System.Collections.Specialized.BitVector32 dataGridViewState1; // see DATAGRIDVIEWSTATE1_ consts above private System.Collections.Specialized.BitVector32 dataGridViewState2; // see DATAGRIDVIEWSTATE2_ consts above private System.Collections.Specialized.BitVector32 dataGridViewOper; // see DATAGRIDVIEWOPER_ consts above private const BorderStyle defaultBorderStyle = BorderStyle.FixedSingle; private const DataGridViewAdvancedCellBorderStyle defaultAdvancedCellBorderStyle = DataGridViewAdvancedCellBorderStyle.Single; private const DataGridViewAdvancedCellBorderStyle defaultAdvancedRowHeadersBorderStyle = DataGridViewAdvancedCellBorderStyle.OutsetPartial; private const DataGridViewAdvancedCellBorderStyle defaultAdvancedColumnHeadersBorderStyle = DataGridViewAdvancedCellBorderStyle.OutsetPartial; private const DataGridViewSelectionMode defaultSelectionMode = DataGridViewSelectionMode.RowHeaderSelect; private const DataGridViewEditMode defaultEditMode = DataGridViewEditMode.EditOnKeystrokeOrF2; private const DataGridViewAutoSizeRowCriteriaInternal invalidDataGridViewAutoSizeRowCriteriaInternalMask = ~(DataGridViewAutoSizeRowCriteriaInternal.Header | DataGridViewAutoSizeRowCriteriaInternal.AllColumns); private SolidBrush backgroundBrush = DefaultBackgroundBrush; private Pen gridPen; private Cursor oldCursor; private Graphics cachedGraphics; private HScrollBar horizScrollBar = new HScrollBar(); private VScrollBar vertScrollBar = new VScrollBar(); private DataGridViewHeaderCell topLeftHeaderCell; private DataGridViewRow rowTemplate; private DataGridViewRowCollection dataGridViewRows; private DataGridViewColumnCollection dataGridViewColumns; private DataGridViewCellStyle placeholderCellStyle; private StringFormat placeholderStringFormat; private DataGridViewColumn sortedColumn; private SortOrder sortOrder; private object uneditedFormattedValue; private Control editingControl, latestEditingControl, cachedEditingControl; private Panel editingPanel; private Point ptCurrentCell, ptCurrentCellCache = Point.Empty, ptAnchorCell, ptMouseDownCell, ptMouseEnteredCell, ptToolTipCell, ptMouseDownGridCoord; private DataGridViewSelectionMode selectionMode; private DataGridViewEditMode editMode; // Note that a cell can only be in one bag but not both at the same time. private DataGridViewCellLinkedList individualSelectedCells; private DataGridViewCellLinkedList individualReadOnlyCells; private DataGridViewIntLinkedList selectedBandIndexes; private DataGridViewIntLinkedList selectedBandSnapshotIndexes; private DataGridViewCellStyle defaultCellStyle, columnHeadersDefaultCellStyle, rowHeadersDefaultCellStyle; private DataGridViewCellStyle rowsDefaultCellStyle, alternatingRowsDefaultCellStyle; private ScrollBars scrollBars; private LayoutData layout; private DisplayedBandsData displayedBandsInfo; private Rectangle normalClientRectangle; private ArrayList lstRows; private int availableWidthForFillColumns; private BorderStyle borderStyle; private DataGridViewAdvancedBorderStyle advancedCellBorderStyle; private DataGridViewAdvancedBorderStyle advancedRowHeadersBorderStyle; private DataGridViewAdvancedBorderStyle advancedColumnHeadersBorderStyle; private DataGridViewClipboardCopyMode clipboardCopyMode; private const int minimumRowHeadersWidth = 4; private const int minimumColumnHeadersHeight = 4; private const int defaultRowHeadersWidth = 41; private const int maxHeadersThickness = 32768; private const int upperSize = 0x007FFFFF; private int rowHeadersWidth = defaultRowHeadersWidth; private int cachedRowHeadersWidth; private const int defaultColumnHeadersHeight = 23; private int columnHeadersHeight = defaultColumnHeadersHeight; private int cachedColumnHeadersHeight; private DataGridViewAutoSizeRowsMode autoSizeRowsMode; private DataGridViewAutoSizeColumnsMode autoSizeColumnsMode; private DataGridViewColumnHeadersHeightSizeMode columnHeadersHeightSizeMode; private DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode; private DataGridViewCellStyleChangedEventArgs dgvcsce; private DataGridViewCellPaintingEventArgs dgvcpe; private DataGridViewCellValueEventArgs dgvcve; private DataGridViewRowHeightInfoNeededEventArgs dgvrhine; private DataGridViewRowPostPaintEventArgs dgvrpope; private DataGridViewRowPrePaintEventArgs dgvrprpe; // the sum of the widths in pixels of the scrolling columns preceding // the first visible scrolling column private int horizontalOffset; // the sum of the heights in pixels of the scrolling rows preceding // the first visible scrolling row private int verticalOffset; // the number of pixels of the firstDisplayedScrollingCol which are not visible private int negOffset; // the index of the potential 'new' row. -1 if there is no 'new' row. private int newRowIndex = -1; // residual fraction of WHEEL_DELTA (120) for wheel scrolling private int cumulativeVerticalWheelDelta; private int cumulativeHorizontalWheelDelta; private int trackColAnchor; private int trackColumn = -1; private int trackColumnEdge = -1; private int trackRowAnchor; private int trackRow = -1; private int trackRowEdge = -1; private int lastHeaderShadow = -1; private int currentColSplitBar = -1, lastColSplitBar = -1; private int currentRowSplitBar = -1, lastRowSplitBar = -1; private int mouseBarOffset; private int noDimensionChangeCount; private int noSelectionChangeCount; private int noAutoSizeCount; private int inBulkPaintCount; private int inBulkLayoutCount; private int inPerformLayoutCount; private System.Windows.Forms.Timer vertScrollTimer, horizScrollTimer; private Hashtable converters; private Hashtable pens; private Hashtable brushes; private NativeMethods.RECT[] cachedScrollableRegion; // DataBinding private DataGridViewDataConnection dataConnection; // ToolTip private DataGridViewToolTip toolTipControl; // the tool tip string we get from cells private string toolTipCaption = String.Empty; private const int maxTTDISPINFOBufferLength = 80; // Last Mouse Click Info private MouseClickInfo lastMouseClickInfo; #if DEBUG // set to false when the grid is not in [....] with the underlying data store // in virtual mode, and OnCellValueNeeded cannot be called. internal bool dataStoreAccessAllowed = true; #endif /// /// /// 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(); } ///Initializes a new instance of the ///class. [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public virtual DataGridViewAdvancedBorderStyle AdjustedTopLeftHeaderBorderStyle { get { DataGridViewAdvancedBorderStyle dgvabs; if (this.ApplyVisualStylesToHeaderCells) { switch (this.AdvancedColumnHeadersBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.OutsetDouble: case DataGridViewAdvancedCellBorderStyle.OutsetPartial: dgvabs = new DataGridViewAdvancedBorderStyle(); if (this.RightToLeftInternal) { dgvabs.LeftInternal = DataGridViewAdvancedCellBorderStyle.Outset; } else { dgvabs.LeftInternal = DataGridViewAdvancedCellBorderStyle.OutsetDouble; } dgvabs.RightInternal = DataGridViewAdvancedCellBorderStyle.Outset; dgvabs.TopInternal = DataGridViewAdvancedCellBorderStyle.OutsetDouble; dgvabs.BottomInternal = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewAdvancedCellBorderStyle.InsetDouble: dgvabs = new DataGridViewAdvancedBorderStyle(); if (this.RightToLeftInternal) { dgvabs.LeftInternal = DataGridViewAdvancedCellBorderStyle.Inset; } else { dgvabs.LeftInternal = DataGridViewAdvancedCellBorderStyle.InsetDouble; } dgvabs.RightInternal = DataGridViewAdvancedCellBorderStyle.Inset; dgvabs.TopInternal = DataGridViewAdvancedCellBorderStyle.InsetDouble; dgvabs.BottomInternal = DataGridViewAdvancedCellBorderStyle.Inset; break; case DataGridViewAdvancedCellBorderStyle.NotSet: // Since the row headers are visible, we should make sure // that there is a left/right border for the TopLeftHeaderCell no matter what. if ((!this.RightToLeftInternal && this.AdvancedColumnHeadersBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.None) || (this.RightToLeftInternal && this.AdvancedColumnHeadersBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.None)) { dgvabs = new DataGridViewAdvancedBorderStyle(); if (this.RightToLeftInternal) { dgvabs.LeftInternal = this.AdvancedColumnHeadersBorderStyle.Left; dgvabs.RightInternal = this.AdvancedRowHeadersBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.OutsetDouble ? DataGridViewAdvancedCellBorderStyle.Outset : this.AdvancedRowHeadersBorderStyle.Right; } else { dgvabs.LeftInternal = this.AdvancedRowHeadersBorderStyle.Left; dgvabs.RightInternal = this.AdvancedColumnHeadersBorderStyle.Right; } dgvabs.TopInternal = this.AdvancedColumnHeadersBorderStyle.Top; dgvabs.BottomInternal = this.AdvancedColumnHeadersBorderStyle.Bottom; } else { dgvabs = this.AdvancedColumnHeadersBorderStyle; } break; default: dgvabs = this.AdvancedColumnHeadersBorderStyle; break; } } else { switch (this.AdvancedColumnHeadersBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.OutsetDouble: case DataGridViewAdvancedCellBorderStyle.OutsetPartial: dgvabs = new DataGridViewAdvancedBorderStyle(); dgvabs.LeftInternal = this.RightToLeftInternal ? DataGridViewAdvancedCellBorderStyle.Outset : DataGridViewAdvancedCellBorderStyle.OutsetDouble; dgvabs.RightInternal = this.RightToLeftInternal ? DataGridViewAdvancedCellBorderStyle.OutsetDouble : DataGridViewAdvancedCellBorderStyle.Outset; dgvabs.TopInternal = DataGridViewAdvancedCellBorderStyle.OutsetDouble; dgvabs.BottomInternal = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewAdvancedCellBorderStyle.InsetDouble: dgvabs = new DataGridViewAdvancedBorderStyle(); dgvabs.LeftInternal = this.RightToLeftInternal ? DataGridViewAdvancedCellBorderStyle.Inset : DataGridViewAdvancedCellBorderStyle.InsetDouble; dgvabs.RightInternal = this.RightToLeftInternal ? DataGridViewAdvancedCellBorderStyle.InsetDouble : DataGridViewAdvancedCellBorderStyle.Inset; dgvabs.TopInternal = DataGridViewAdvancedCellBorderStyle.InsetDouble; dgvabs.BottomInternal = DataGridViewAdvancedCellBorderStyle.Inset; break; case DataGridViewAdvancedCellBorderStyle.NotSet: // Since the row headers are visible, we should make sure // that there is a left/right border for the TopLeftHeaderCell no matter what. if ((!this.RightToLeftInternal && this.AdvancedColumnHeadersBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.None) || (this.RightToLeftInternal && this.AdvancedColumnHeadersBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.None)) { dgvabs = new DataGridViewAdvancedBorderStyle(); if (this.RightToLeftInternal) { dgvabs.LeftInternal = this.AdvancedColumnHeadersBorderStyle.Left; dgvabs.RightInternal = this.AdvancedRowHeadersBorderStyle.Right; } else { dgvabs.LeftInternal = this.AdvancedRowHeadersBorderStyle.Left; dgvabs.RightInternal = this.AdvancedColumnHeadersBorderStyle.Right; } dgvabs.TopInternal = this.AdvancedColumnHeadersBorderStyle.Top; dgvabs.BottomInternal = this.AdvancedColumnHeadersBorderStyle.Bottom; } else { dgvabs = this.AdvancedColumnHeadersBorderStyle; } break; default: dgvabs = this.AdvancedColumnHeadersBorderStyle; break; } } return dgvabs; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public DataGridViewAdvancedBorderStyle AdvancedCellBorderStyle { get { return this.advancedCellBorderStyle; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public DataGridViewAdvancedBorderStyle AdvancedColumnHeadersBorderStyle { get { return this.advancedColumnHeadersBorderStyle; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public DataGridViewAdvancedBorderStyle AdvancedRowHeadersBorderStyle { get { return this.advancedRowHeadersBorderStyle; } } /// [ DefaultValue(true), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToAddRowsDescr) ] public bool AllowUserToAddRows { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToAddRows]; } set { if (this.AllowUserToAddRows != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToAddRows] = value; if (this.DataSource != null) { this.dataConnection.ResetCachedAllowUserToAddRowsInternal(); } OnAllowUserToAddRowsChanged(EventArgs.Empty); } } } internal bool AllowUserToAddRowsInternal { get { if (this.DataSource == null) { return this.AllowUserToAddRows; } else { return this.AllowUserToAddRows && this.dataConnection.AllowAdd; } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToAddRowsChangedDescr) ] public event EventHandler AllowUserToAddRowsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTOADDROWSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTOADDROWSCHANGED, value); } } /// [ DefaultValue(true), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToDeleteRowsDescr) ] public bool AllowUserToDeleteRows { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToDeleteRows]; } set { if (this.AllowUserToDeleteRows != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToDeleteRows] = value; OnAllowUserToDeleteRowsChanged(EventArgs.Empty); } } } internal bool AllowUserToDeleteRowsInternal { get { if (this.DataSource == null) { return this.AllowUserToDeleteRows; } else { return this.AllowUserToDeleteRows && this.dataConnection.AllowRemove; } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToDeleteRowsChangedDescr) ] public event EventHandler AllowUserToDeleteRowsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTODELETEROWSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTODELETEROWSCHANGED, value); } } /// [ DefaultValue(false), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToOrderColumnsDescr) ] public bool AllowUserToOrderColumns { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToOrderColumns]; } set { if (this.AllowUserToOrderColumns != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_allowUserToOrderColumns] = value; OnAllowUserToOrderColumnsChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToOrderColumnsChangedDescr) ] public event EventHandler AllowUserToOrderColumnsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTOORDERCOLUMNSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTOORDERCOLUMNSCHANGED, value); } } /// /// /// [ DefaultValue(true), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToResizeColumnsDescr) ] public bool AllowUserToResizeColumns { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_allowUserToResizeColumns]; } set { if (this.AllowUserToResizeColumns != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_allowUserToResizeColumns] = value; OnAllowUserToResizeColumnsChanged(EventArgs.Empty); } } } ////// Gets or sets a global value indicating if the dataGridView's columns are resizable with the mouse. /// The resizable aspect of a column can be overridden by DataGridViewColumn.Resizable. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToResizeColumnsChangedDescr) ] public event EventHandler AllowUserToResizeColumnsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTORESIZECOLUMNSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTORESIZECOLUMNSCHANGED, value); } } /// /// /// [ DefaultValue(true), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_AllowUserToResizeRowsDescr) ] public bool AllowUserToResizeRows { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_allowUserToResizeRows]; } set { if (this.AllowUserToResizeRows != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_allowUserToResizeRows] = value; OnAllowUserToResizeRowsChanged(EventArgs.Empty); } } } ////// Gets or sets a global value indicating if the dataGridView's rows are resizable with the mouse. /// The resizable aspect of a row can be overridden by DataGridViewRow.Resizable. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnAllowUserToResizeRowsChangedDescr) ] public event EventHandler AllowUserToResizeRowsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALLOWUSERTORESIZEROWSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALLOWUSERTORESIZEROWSCHANGED, value); } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_AlternatingRowsDefaultCellStyleDescr) ] public DataGridViewCellStyle AlternatingRowsDefaultCellStyle { get { if (this.alternatingRowsDefaultCellStyle == null) { this.alternatingRowsDefaultCellStyle = new DataGridViewCellStyle(); this.alternatingRowsDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.AlternatingRows); } return this.alternatingRowsDefaultCellStyle; } set { DataGridViewCellStyle cs = this.AlternatingRowsDefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.AlternatingRows); this.alternatingRowsDefaultCellStyle = value; if (value != null) { this.alternatingRowsDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.AlternatingRows); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.AlternatingRowsDefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnAlternatingRowsDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewAlternatingRowsDefaultCellStyleChangedDescr) ] public event EventHandler AlternatingRowsDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWALTERNATINGROWSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWALTERNATINGROWSDEFAULTCELLSTYLECHANGED, value); } } internal bool ApplyVisualStylesToInnerCells { get { return Application.RenderWithVisualStyles; } } internal bool ApplyVisualStylesToHeaderCells { get { return Application.RenderWithVisualStyles && this.EnableHeadersVisualStyles; } } /// /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced), DefaultValue(true) ] public bool AutoGenerateColumns { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_autoGenerateColumns]; } set{ if (this.dataGridViewState1[DATAGRIDVIEWSTATE1_autoGenerateColumns] != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_autoGenerateColumns] = value; OnAutoGenerateColumnsChanged(EventArgs.Empty); } } } ////// ///[ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public event EventHandler AutoGenerateColumnsChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWAUTOGENERATECOLUMNSCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWAUTOGENERATECOLUMNSCHANGED, value); } } /// /// /// public override bool AutoSize { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_isAutoSized]; } set { base.AutoSize = value; this.dataGridViewState1[DATAGRIDVIEWSTATE1_isAutoSized] = value; } } ///Overriding base implementation for perf gains. ////// /// [ DefaultValue(DataGridViewAutoSizeColumnsMode.None), SRCategory(SR.CatLayout), SRDescription(SR.DataGridView_AutoSizeColumnsModeDescr) ] public DataGridViewAutoSizeColumnsMode AutoSizeColumnsMode { get { return this.autoSizeColumnsMode; } set { switch (value) { case DataGridViewAutoSizeColumnsMode.None: case DataGridViewAutoSizeColumnsMode.ColumnHeader: case DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader: case DataGridViewAutoSizeColumnsMode.AllCells: case DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader: case DataGridViewAutoSizeColumnsMode.DisplayedCells: case DataGridViewAutoSizeColumnsMode.Fill: break; default: throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewAutoSizeColumnsMode)); } if (this.autoSizeColumnsMode != value) { foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.AutoSizeMode == DataGridViewAutoSizeColumnMode.NotSet && dataGridViewColumn.Visible) { // Make sure there is no visible column which would have an inherited autosize mode based on the header only. if (value == DataGridViewAutoSizeColumnsMode.ColumnHeader && !this.ColumnHeadersVisible) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotAutoSizeColumnsInvisibleColumnHeaders)); } // Make sure there is no visible frozen column which would have a Fill inherited autosize mode. if (value == DataGridViewAutoSizeColumnsMode.Fill && dataGridViewColumn.Frozen) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotAutoFillFrozenColumns)); } } } DataGridViewAutoSizeColumnMode[] previousModes = new DataGridViewAutoSizeColumnMode[this.Columns.Count]; foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { /*DataGridViewAutoSizeColumnMode previousInheritedMode = dataGridViewColumn.InheritedAutoSizeMode; bool previousInheritedModeAutoSized = previousInheritedMode != DataGridViewAutoSizeColumnMode.Fill && previousInheritedMode != DataGridViewAutoSizeColumnMode.None && previousInheritedMode != DataGridViewAutoSizeColumnMode.NotSet;*/ previousModes[dataGridViewColumn.Index] = dataGridViewColumn.InheritedAutoSizeMode; } DataGridViewAutoSizeColumnsModeEventArgs dgvcasme = new DataGridViewAutoSizeColumnsModeEventArgs(previousModes); this.autoSizeColumnsMode = value; OnAutoSizeColumnsModeChanged(dgvcasme); } } } ///Gets or sets the columns' autosizing mode. Standard inheritance model is used: /// Columns with AutoSizeMode property set to NotSet will use this auto size mode. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewAutoSizeColumnsModeChangedDescr) ] public event DataGridViewAutoSizeColumnsModeEventHandler AutoSizeColumnsModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWAUTOSIZECOLUMNSMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWAUTOSIZECOLUMNSMODECHANGED, value); } } /// /// /// [ DefaultValue(DataGridViewAutoSizeRowsMode.None), SRCategory(SR.CatLayout), SRDescription(SR.DataGridView_AutoSizeRowsModeDescr) ] public DataGridViewAutoSizeRowsMode AutoSizeRowsMode { get { return this.autoSizeRowsMode; } set { switch (value) { case DataGridViewAutoSizeRowsMode.None: case DataGridViewAutoSizeRowsMode.AllHeaders: case DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders: case DataGridViewAutoSizeRowsMode.AllCells: case DataGridViewAutoSizeRowsMode.DisplayedHeaders: case DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders: case DataGridViewAutoSizeRowsMode.DisplayedCells: break; default: throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewAutoSizeRowsMode)); } if ((value == DataGridViewAutoSizeRowsMode.AllHeaders || value == DataGridViewAutoSizeRowsMode.DisplayedHeaders) && !this.RowHeadersVisible) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotAutoSizeRowsInvisibleRowHeader)); } if (this.autoSizeRowsMode != value) { DataGridViewAutoSizeModeEventArgs dgvasme = new DataGridViewAutoSizeModeEventArgs(this.autoSizeRowsMode != DataGridViewAutoSizeRowsMode.None); this.autoSizeRowsMode = value; OnAutoSizeRowsModeChanged(dgvasme); } } } ///Gets or sets the rows' autosizing mode. ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewAutoSizeRowsModeChangedDescr) ] public event DataGridViewAutoSizeModeEventHandler AutoSizeRowsModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWAUTOSIZEROWSMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWAUTOSIZEROWSMODECHANGED, value); } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public override Color BackColor { get { return base.BackColor; } set { base.BackColor = value; } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler BackColorChanged { add { base.BackColorChanged += value; } remove { base.BackColorChanged -= value; } } internal SolidBrush BackgroundBrush { get { return this.backgroundBrush; } } /// /// /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridViewBackgroundColorDescr) ] public Color BackgroundColor { get { return this.backgroundBrush.Color; } set { if (value.IsEmpty) { throw new ArgumentException(SR.GetString(SR.DataGridView_EmptyColor, "BackgroundColor")); } if (value.A < 255) { throw new ArgumentException(SR.GetString(SR.DataGridView_TransparentColor, "BackgroundColor")); } if (!value.Equals(this.backgroundBrush.Color)) { this.backgroundBrush = new SolidBrush(value); OnBackgroundColorChanged(EventArgs.Empty); } } } ///Gets or sets the background color of the dataGridView. ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewBackgroundColorChangedDescr) ] public event EventHandler BackgroundColorChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWBACKGROUNDCOLORCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWBACKGROUNDCOLORCHANGED, value); } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] public override Image BackgroundImage { get { return base.BackgroundImage; } set { base.BackgroundImage = value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] public override ImageLayout BackgroundImageLayout { get { return base.BackgroundImageLayout; } set { base.BackgroundImageLayout = value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler BackgroundImageChanged { add { base.BackgroundImageChanged += value; } remove { base.BackgroundImageChanged -= value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler BackgroundImageLayoutChanged { add { base.BackgroundImageLayoutChanged += value; } remove { base.BackgroundImageLayoutChanged -= value; } } /// private bool ShouldSerializeBackgroundColor() { return !this.BackgroundColor.Equals(DefaultBackgroundBrush.Color); } /// [ DefaultValue(BorderStyle.FixedSingle), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_BorderStyleDescr) ] public BorderStyle BorderStyle { get { return this.borderStyle; } set { // Sequential enum. Valid values are 0x0 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)BorderStyle.None, (int)BorderStyle.Fixed3D)){ throw new InvalidEnumArgumentException("value", (int)value, typeof(BorderStyle)); } if (this.borderStyle != value) { using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.BorderStyle)) { this.borderStyle = value; if (!this.AutoSize) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); } Invalidate(); OnBorderStyleChanged(EventArgs.Empty); } } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewBorderStyleChangedDescr) ] public event EventHandler BorderStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWBORDERSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWBORDERSTYLECHANGED, value); } } private int BorderWidth { get { if (this.BorderStyle == BorderStyle.Fixed3D) { return Application.RenderWithVisualStyles ? 1 : SystemInformation.Border3DSize.Width; } else if (this.BorderStyle == BorderStyle.FixedSingle) { return 1; } else { return 0; } } } internal Graphics CachedGraphics { get { if (this.cachedGraphics == null) { this.cachedGraphics = WindowsFormsUtils.CreateMeasurementGraphics(); } return this.cachedGraphics; } } // Ime can be shown when there is a read-write current cell. protected override bool CanEnableIme { get { bool canEnable = false; Debug.WriteLineIf( CompModSwitches.ImeMode.Level >= TraceLevel.Info, "Inside get_CanEnableIme(), this = " + this ); Debug.Indent(); if (this.ptCurrentCell.X != -1 /*&& !this.IsCurrentCellInEditMode*/ && ColumnEditable(this.ptCurrentCell.X)) { DataGridViewCell dataGridViewCell = this.CurrentCellInternal; Debug.Assert(dataGridViewCell != null); if (!IsSharedCellReadOnly(dataGridViewCell, this.ptCurrentCell.Y)) { canEnable = base.CanEnableIme; } } Debug.WriteLineIf( CompModSwitches.ImeMode.Level >= TraceLevel.Info, "Value = " + canEnable ); Debug.Unindent(); return canEnable; } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_CellBorderStyleDescr), Browsable(true), DefaultValue(DataGridViewCellBorderStyle.Single) ] public DataGridViewCellBorderStyle CellBorderStyle { get { switch (this.advancedCellBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.NotSet: if (this.advancedCellBorderStyle.Top == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Bottom == DataGridViewAdvancedCellBorderStyle.None) { if (this.RightToLeftInternal) { if (this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.Single) { return DataGridViewCellBorderStyle.SingleVertical; } } else { if (this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.Single) { return DataGridViewCellBorderStyle.SingleVertical; } } if (this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.Outset && this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.Outset) { return DataGridViewCellBorderStyle.RaisedVertical; } if (this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.Inset && this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.Inset) { return DataGridViewCellBorderStyle.SunkenVertical; } } if (this.advancedCellBorderStyle.Left == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Right == DataGridViewAdvancedCellBorderStyle.None) { if (this.advancedCellBorderStyle.Top == DataGridViewAdvancedCellBorderStyle.None && this.advancedCellBorderStyle.Bottom == DataGridViewAdvancedCellBorderStyle.Single) { return DataGridViewCellBorderStyle.SingleHorizontal; } if (this.advancedCellBorderStyle.Top == DataGridViewAdvancedCellBorderStyle.Outset && this.advancedCellBorderStyle.Bottom == DataGridViewAdvancedCellBorderStyle.Outset) { return DataGridViewCellBorderStyle.RaisedHorizontal; } if (this.advancedCellBorderStyle.Top == DataGridViewAdvancedCellBorderStyle.Inset && this.advancedCellBorderStyle.Bottom == DataGridViewAdvancedCellBorderStyle.Inset) { return DataGridViewCellBorderStyle.SunkenHorizontal; } } return DataGridViewCellBorderStyle.Custom; case DataGridViewAdvancedCellBorderStyle.None: return DataGridViewCellBorderStyle.None; case DataGridViewAdvancedCellBorderStyle.Single: return DataGridViewCellBorderStyle.Single; case DataGridViewAdvancedCellBorderStyle.Inset: return DataGridViewCellBorderStyle.Sunken; case DataGridViewAdvancedCellBorderStyle.Outset: return DataGridViewCellBorderStyle.Raised; default: Debug.Fail("Unexpected this.advancedCellBorderStyle.All value in CellBorderStyle.get"); return DataGridViewCellBorderStyle.Custom; } } set { // Sequential enum. Valid values are 0x0 to 0xa if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewCellBorderStyle.Custom, (int)DataGridViewCellBorderStyle.SunkenHorizontal)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewCellBorderStyle)); } if (value != this.CellBorderStyle) { if (value == DataGridViewCellBorderStyle.Custom) { throw new ArgumentException(SR.GetString(SR.DataGridView_CustomCellBorderStyleInvalid, "CellBorderStyle")); } this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = true; try { switch (value) { case DataGridViewCellBorderStyle.Single: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single; break; case DataGridViewCellBorderStyle.Raised: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewCellBorderStyle.Sunken: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Inset; break; case DataGridViewCellBorderStyle.None: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; break; case DataGridViewCellBorderStyle.SingleVertical: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; if (this.RightToLeftInternal) { this.advancedCellBorderStyle.LeftInternal = DataGridViewAdvancedCellBorderStyle.Single; } else { this.advancedCellBorderStyle.RightInternal = DataGridViewAdvancedCellBorderStyle.Single; } break; case DataGridViewCellBorderStyle.RaisedVertical: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.RightInternal = DataGridViewAdvancedCellBorderStyle.Outset; this.advancedCellBorderStyle.LeftInternal = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewCellBorderStyle.SunkenVertical: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.RightInternal = DataGridViewAdvancedCellBorderStyle.Inset; this.advancedCellBorderStyle.LeftInternal = DataGridViewAdvancedCellBorderStyle.Inset; break; case DataGridViewCellBorderStyle.SingleHorizontal: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.BottomInternal = DataGridViewAdvancedCellBorderStyle.Single; break; case DataGridViewCellBorderStyle.RaisedHorizontal: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.TopInternal = DataGridViewAdvancedCellBorderStyle.Outset; this.advancedCellBorderStyle.BottomInternal = DataGridViewAdvancedCellBorderStyle.Outset; break; case DataGridViewCellBorderStyle.SunkenHorizontal: this.advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; this.advancedCellBorderStyle.TopInternal = DataGridViewAdvancedCellBorderStyle.Inset; this.advancedCellBorderStyle.BottomInternal = DataGridViewAdvancedCellBorderStyle.Inset; break; } } finally { this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = false; } OnCellBorderStyleChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellBorderStyleChangedDescr) ] public event EventHandler CellBorderStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLBORDERSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLBORDERSTYLECHANGED, value); } } internal bool CellMouseDownInContentBounds { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_cellMouseDownInContentBounds]; } set { this.dataGridViewState2[DATAGRIDVIEWSTATE2_cellMouseDownInContentBounds] = value; } } internal DataGridViewCellPaintingEventArgs CellPaintingEventArgs { get { if (this.dgvcpe == null) { this.dgvcpe = new DataGridViewCellPaintingEventArgs(this); } return this.dgvcpe; } } private DataGridViewCellStyleChangedEventArgs CellStyleChangedEventArgs { get { if (this.dgvcsce == null) { this.dgvcsce = new DataGridViewCellStyleChangedEventArgs(); } return this.dgvcsce; } } internal DataGridViewCellValueEventArgs CellValueEventArgs { get { if (this.dgvcve == null) { this.dgvcve = new DataGridViewCellValueEventArgs(); } return this.dgvcve; } } /// [ Browsable(true), DefaultValue(DataGridViewClipboardCopyMode.EnableWithAutoHeaderText), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_ClipboardCopyModeDescr) ] public DataGridViewClipboardCopyMode ClipboardCopyMode { get { return this.clipboardCopyMode; } set { // Sequential enum. Valid values are 0x0 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewClipboardCopyMode.Disable, (int)DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewClipboardCopyMode)); } this.clipboardCopyMode = value; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), DefaultValue(0), EditorBrowsable(EditorBrowsableState.Advanced) ] public int ColumnCount { get { return this.Columns.Count; } set { if (value < 0) { throw new ArgumentOutOfRangeException("ColumnCount", SR.GetString(SR.InvalidLowBoundArgumentEx, "ColumnCount", value.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture))); } if (this.DataSource != null) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotSetColumnCountOnDataBoundDataGridView)); } if (value != this.Columns.Count) { if (value == 0) { // Total removal of the columns. This also clears the rows. this.Columns.Clear(); } else if (value < this.Columns.Count) { // Some columns need to be removed, from the tail of the columns collection while (value < this.Columns.Count) { int currentColumnCount = this.Columns.Count; this.Columns.RemoveAt(currentColumnCount - 1); if (this.Columns.Count >= currentColumnCount) { // Column removal failed. We stop the loop. break; } } } else { // Some DataGridViewTextBoxColumn columns need to be appened. while (value > this.Columns.Count) { int currentColumnCount = this.Columns.Count; this.Columns.Add(null /*columnName*/, null /*headerText*/); if (this.Columns.Count <= currentColumnCount) { // Column addition failed. We stop the loop. break; } } } } } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ColumnHeadersBorderStyleDescr), Browsable(true), DefaultValue(DataGridViewHeaderBorderStyle.Raised) ] public DataGridViewHeaderBorderStyle ColumnHeadersBorderStyle { get { switch (this.advancedColumnHeadersBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.NotSet: return DataGridViewHeaderBorderStyle.Custom; case DataGridViewAdvancedCellBorderStyle.None: return DataGridViewHeaderBorderStyle.None; case DataGridViewAdvancedCellBorderStyle.Single: return DataGridViewHeaderBorderStyle.Single; case DataGridViewAdvancedCellBorderStyle.InsetDouble: return DataGridViewHeaderBorderStyle.Sunken; case DataGridViewAdvancedCellBorderStyle.OutsetPartial: return DataGridViewHeaderBorderStyle.Raised; default: return DataGridViewHeaderBorderStyle.Custom; } } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewHeaderBorderStyle.Custom, (int)DataGridViewHeaderBorderStyle.None)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewHeaderBorderStyle)); } if (value != this.ColumnHeadersBorderStyle) { if (value == DataGridViewHeaderBorderStyle.Custom) { throw new ArgumentException(SR.GetString(SR.DataGridView_CustomCellBorderStyleInvalid, "ColumnHeadersBorderStyle")); } this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = true; try { switch (value) { case DataGridViewHeaderBorderStyle.Single: this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single; break; case DataGridViewHeaderBorderStyle.Raised: this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.OutsetPartial; break; case DataGridViewHeaderBorderStyle.Sunken: this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.InsetDouble; break; case DataGridViewHeaderBorderStyle.None: this.advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; break; } } finally { this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = false; } OnColumnHeadersBorderStyleChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnHeadersBorderStyleChangedDescr) ] public event EventHandler ColumnHeadersBorderStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSBORDERSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSBORDERSTYLECHANGED, value); } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ColumnHeadersDefaultCellStyleDescr), AmbientValue(null) ] public DataGridViewCellStyle ColumnHeadersDefaultCellStyle { get { if (this.columnHeadersDefaultCellStyle == null) { this.columnHeadersDefaultCellStyle = this.DefaultColumnHeadersDefaultCellStyle; } return this.columnHeadersDefaultCellStyle; } set { DataGridViewCellStyle cs = this.ColumnHeadersDefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.ColumnHeaders); this.columnHeadersDefaultCellStyle = value; if (value != null) { this.columnHeadersDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.ColumnHeaders); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.ColumnHeadersDefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnColumnHeadersDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } private DataGridViewCellStyle DefaultColumnHeadersDefaultCellStyle { get { DataGridViewCellStyle defaultStyle = new DataGridViewCellStyle(); defaultStyle.BackColor = DefaultHeadersBackBrush.Color; defaultStyle.ForeColor = DefaultForeBrush.Color; defaultStyle.SelectionBackColor = DefaultSelectionBackBrush.Color; defaultStyle.SelectionForeColor = DefaultSelectionForeBrush.Color; defaultStyle.Font = base.Font; defaultStyle.AlignmentInternal = DataGridViewContentAlignment.MiddleLeft; defaultStyle.WrapModeInternal = DataGridViewTriState.True; defaultStyle.AddScope(this, DataGridViewCellStyleScopes.ColumnHeaders); this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientColumnHeadersFont] = true; return defaultStyle; } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewColumnHeadersDefaultCellStyleChangedDescr) ] public event EventHandler ColumnHeadersDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSDEFAULTCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatAppearance), Localizable(true), SRDescription(SR.DataGridView_ColumnHeadersHeightDescr) ] public int ColumnHeadersHeight { get { return this.columnHeadersHeight; } set { if (value < minimumColumnHeadersHeight) { throw new ArgumentOutOfRangeException("ColumnHeadersHeight", SR.GetString(SR.InvalidLowBoundArgumentEx, "ColumnHeadersHeight", (value).ToString(CultureInfo.CurrentCulture), (minimumColumnHeadersHeight).ToString(CultureInfo.CurrentCulture))); } if (value > maxHeadersThickness) { throw new ArgumentOutOfRangeException("ColumnHeadersHeight", SR.GetString(SR.InvalidHighBoundArgumentEx, "ColumnHeadersHeight", (value).ToString(CultureInfo.CurrentCulture), (maxHeadersThickness).ToString(CultureInfo.CurrentCulture))); } if (this.ColumnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.AutoSize) { this.cachedColumnHeadersHeight = value; } else if (this.columnHeadersHeight != value) { SetColumnHeadersHeightInternal(value, true /*invalidInAdjustFillingColumns*/); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewColumnHeadersHeightChangedDescr) ] public event EventHandler ColumnHeadersHeightChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTCHANGED, value); } } private bool ShouldSerializeColumnHeadersHeight() { return this.ColumnHeadersHeightSizeMode != DataGridViewColumnHeadersHeightSizeMode.AutoSize && defaultColumnHeadersHeight != this.ColumnHeadersHeight; } /// /// /// [ DefaultValue(DataGridViewColumnHeadersHeightSizeMode.EnableResizing), RefreshProperties(RefreshProperties.All), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_ColumnHeadersHeightSizeModeDescr) ] public DataGridViewColumnHeadersHeightSizeMode ColumnHeadersHeightSizeMode { get { return this.columnHeadersHeightSizeMode; } set { // Sequential enum. Valid values are 0x0 to 0x2 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewColumnHeadersHeightSizeMode.EnableResizing, (int)DataGridViewColumnHeadersHeightSizeMode.AutoSize)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewColumnHeadersHeightSizeMode)); } if (this.columnHeadersHeightSizeMode != value) { /*if (value == DataGridViewColumnHeadersHeightSizeMode.AutoSize && !this.ColumnHeadersVisible) { We intentionally don't throw an error because of designer code spit order. }*/ DataGridViewAutoSizeModeEventArgs dgvasme = new DataGridViewAutoSizeModeEventArgs(this.columnHeadersHeightSizeMode == DataGridViewColumnHeadersHeightSizeMode.AutoSize); this.columnHeadersHeightSizeMode = value; OnColumnHeadersHeightSizeModeChanged(dgvasme); } } } ////// Gets or sets a value that determines the behavior for adjusting the column headers height. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnHeadersHeightSizeModeChangedDescr) ] public event DataGridViewAutoSizeModeEventHandler ColumnHeadersHeightSizeModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTSIZEMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERSHEIGHTSIZEMODECHANGED, value); } } /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(true), SRDescription(SR.DataGridViewColumnHeadersVisibleDescr) ] public bool ColumnHeadersVisible { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_columnHeadersVisible]; } set { if (this.ColumnHeadersVisible != value) { if (!value) { // Make sure that there is no visible column that only counts on the column headers to autosize DataGridViewColumn dataGridViewColumn = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); while (dataGridViewColumn != null) { if (dataGridViewColumn.InheritedAutoSizeMode == DataGridViewAutoSizeColumnMode.ColumnHeader) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_ColumnHeadersCannotBeInvisible)); } dataGridViewColumn = this.Columns.GetNextColumn(dataGridViewColumn, DataGridViewElementStates.Visible, DataGridViewElementStates.None); } } using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.ColumnHeadersVisible)) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_columnHeadersVisible] = value; this.layout.ColumnHeadersVisible = value; this.displayedBandsInfo.EnsureDirtyState(); if (!this.AutoSize) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); } InvalidateInside(); OnColumnHeadersGlobalAutoSize(); } } } } ////// Gets /// or sets a value indicating if the dataGridView's column headers are visible. /// ///[ Editor("System.Windows.Forms.Design.DataGridViewColumnCollectionEditor, " + AssemblyRef.SystemDesign, typeof(System.Drawing.Design.UITypeEditor)), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), MergableProperty(false) ] public DataGridViewColumnCollection Columns { get { if (this.dataGridViewColumns == null) { this.dataGridViewColumns = CreateColumnsInstance(); } return this.dataGridViewColumns; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public DataGridViewCell CurrentCell { get { if (this.ptCurrentCell.X == -1 && this.ptCurrentCell.Y == -1) { return null; } Debug.Assert(this.ptCurrentCell.X >= 0 && ptCurrentCell.Y >= 0); Debug.Assert(this.ptCurrentCell.X < this.Columns.Count); Debug.Assert(this.ptCurrentCell.Y < this.Rows.Count); DataGridViewRow dataGridViewRow = (DataGridViewRow) this.Rows[this.ptCurrentCell.Y]; // unsharing row return dataGridViewRow.Cells[this.ptCurrentCell.X]; } set { if ((value != null && (value.RowIndex != this.ptCurrentCell.Y || value.ColumnIndex != this.ptCurrentCell.X)) || (value == null && this.ptCurrentCell.X != -1)) { if (value == null) { ClearSelection(); if (!SetCurrentCellAddressCore(-1, -1, true /*setAnchorCellAddress*/, true /*validateCurrentCell*/, false /*throughMouseClick*/)) { // Edited value couldn't be committed or aborted throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } } else { if (value.DataGridView != this) { throw new ArgumentException(SR.GetString(SR.DataGridView_CellDoesNotBelongToDataGridView)); } if (!this.Columns[value.ColumnIndex].Visible || (this.Rows.GetRowState(value.RowIndex) & DataGridViewElementStates.Visible) == 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CurrentCellCannotBeInvisible)); } if (!ScrollIntoView(value.ColumnIndex, value.RowIndex, true)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } if (IsInnerCellOutOfBounds(value.ColumnIndex, value.RowIndex)) { return; } ClearSelection(value.ColumnIndex, value.RowIndex, true /*selectExceptionElement*/); if (!SetCurrentCellAddressCore(value.ColumnIndex, value.RowIndex, true, false, false)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } } } } } /// [ Browsable(false) ] public Point CurrentCellAddress { get { return this.ptCurrentCell; } } private DataGridViewCell CurrentCellInternal { get { Debug.Assert(this.ptCurrentCell.X >= 0 && this.ptCurrentCell.X < this.Columns.Count); Debug.Assert(this.ptCurrentCell.Y >= 0 && this.ptCurrentCell.Y < this.Rows.Count); DataGridViewRow dataGridViewRow = this.Rows.SharedRow(this.ptCurrentCell.Y); Debug.Assert(dataGridViewRow != null); DataGridViewCell dataGridViewCell = dataGridViewRow.Cells[this.ptCurrentCell.X]; Debug.Assert(this.IsSharedCellVisible(dataGridViewCell, this.ptCurrentCell.Y)); return dataGridViewCell; } } private bool CurrentCellIsFirstVisibleCell { get { if (this.ptCurrentCell.X == -1) { return false; } Debug.Assert(this.ptCurrentCell.Y != -1); bool previousVisibleColumnExists = (null != this.Columns.GetPreviousColumn(this.Columns[this.ptCurrentCell.X], DataGridViewElementStates.Visible, DataGridViewElementStates.None)); bool previousVisibleRowExists = (-1 != this.Rows.GetPreviousRow(this.ptCurrentCell.Y, DataGridViewElementStates.Visible)); return !previousVisibleColumnExists && !previousVisibleRowExists; } } private bool CurrentCellIsLastVisibleCell { get { if (this.ptCurrentCell.X == -1) { return false; } Debug.Assert(this.ptCurrentCell.Y != -1); bool nextVisibleColumnExists = (null != this.Columns.GetNextColumn(this.Columns[this.ptCurrentCell.X], DataGridViewElementStates.Visible, DataGridViewElementStates.None)); bool nextVisibleRowExists = (-1 != this.Rows.GetNextRow(this.ptCurrentCell.Y, DataGridViewElementStates.Visible)); return !nextVisibleColumnExists && !nextVisibleRowExists; } } private bool CurrentCellIsEditedAndOnlySelectedCell { get { if (this.ptCurrentCell.X == -1) { return false; } Debug.Assert(this.ptCurrentCell.Y != -1); return this.editingControl != null && GetCellCount(DataGridViewElementStates.Selected) == 1 && this.CurrentCellInternal.Selected; } } /// [ Browsable(false) ] public DataGridViewRow CurrentRow { get { if (this.ptCurrentCell.X == -1) { return null; } Debug.Assert(this.ptCurrentCell.Y >= 0); Debug.Assert(this.ptCurrentCell.Y < this.Rows.Count); return this.Rows[this.ptCurrentCell.Y]; } } internal Cursor CursorInternal { set { this.dataGridViewState2[DATAGRIDVIEWSTATE2_ignoreCursorChange] = true; try { this.Cursor = value; } finally { this.dataGridViewState2[DATAGRIDVIEWSTATE2_ignoreCursorChange] = false; } } } internal DataGridViewDataConnection DataConnection { get { return this.dataConnection; } } /// [ DefaultValue(""), SRCategory(SR.CatData), Editor("System.Windows.Forms.Design.DataMemberListEditor, " + AssemblyRef.SystemDesign, typeof(System.Drawing.Design.UITypeEditor)), SRDescription(SR.DataGridViewDataMemberDescr) ] public string DataMember { get { if (this.dataConnection == null) { return String.Empty; } else { return this.dataConnection.DataMember; } } set { if (value != this.DataMember) { this.CurrentCell = null; if (this.dataConnection == null) { this.dataConnection = new DataGridViewDataConnection(this); } this.dataConnection.SetDataConnection(this.DataSource, value); OnDataMemberChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewDataMemberChangedDescr) ] public event EventHandler DataMemberChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDATAMEMBERCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDATAMEMBERCHANGED, value); } } /// [ DefaultValue(null), SRCategory(SR.CatData), RefreshProperties(RefreshProperties.Repaint), AttributeProvider(typeof(IListSource)), SRDescription(SR.DataGridViewDataSourceDescr) ] public object DataSource { get { if (this.dataConnection == null) { return null; } else { return this.dataConnection.DataSource; } } set { if (value != this.DataSource) { this.CurrentCell = null; if (this.dataConnection == null) { this.dataConnection = new DataGridViewDataConnection(this); this.dataConnection.SetDataConnection(value, this.DataMember); } else { if (this.dataConnection.ShouldChangeDataMember(value)) { // we fire DataMemberChanged event this.DataMember = ""; } this.dataConnection.SetDataConnection(value, this.DataMember); if (value == null) { this.dataConnection = null; } } OnDataSourceChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewDataSourceChangedDescr) ] public event EventHandler DataSourceChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDATASOURCECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDATASOURCECHANGED, value); } } private static SolidBrush DefaultBackBrush { get { return (SolidBrush) SystemBrushes.Window; } } private static SolidBrush DefaultBackgroundBrush { get { return (SolidBrush) SystemBrushes.AppWorkspace; } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_DefaultCellStyleDescr), AmbientValue(null) ] public DataGridViewCellStyle DefaultCellStyle { get { if (this.defaultCellStyle == null) { this.defaultCellStyle = this.DefaultDefaultCellStyle; return this.defaultCellStyle; } else if (this.defaultCellStyle.BackColor == Color.Empty || this.defaultCellStyle.ForeColor == Color.Empty || this.defaultCellStyle.SelectionBackColor == Color.Empty || this.defaultCellStyle.SelectionForeColor == Color.Empty || this.defaultCellStyle.Font == null || this.defaultCellStyle.Alignment == DataGridViewContentAlignment.NotSet || this.defaultCellStyle.WrapMode == DataGridViewTriState.NotSet) { DataGridViewCellStyle defaultCellStyleTmp = new DataGridViewCellStyle(this.defaultCellStyle); defaultCellStyleTmp.Scope = DataGridViewCellStyleScopes.None; if (this.defaultCellStyle.BackColor == Color.Empty) { defaultCellStyleTmp.BackColor = DefaultBackBrush.Color; } if (this.defaultCellStyle.ForeColor == Color.Empty) { defaultCellStyleTmp.ForeColor = base.ForeColor; this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientForeColor] = true; } if (this.defaultCellStyle.SelectionBackColor == Color.Empty) { defaultCellStyleTmp.SelectionBackColor = DefaultSelectionBackBrush.Color; } if (this.defaultCellStyle.SelectionForeColor == Color.Empty) { defaultCellStyleTmp.SelectionForeColor = DefaultSelectionForeBrush.Color; } if (this.defaultCellStyle.Font == null) { defaultCellStyleTmp.Font = base.Font; this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientFont] = true; } if (this.defaultCellStyle.Alignment == DataGridViewContentAlignment.NotSet) { defaultCellStyleTmp.AlignmentInternal = DataGridViewContentAlignment.MiddleLeft; } if (this.defaultCellStyle.WrapMode == DataGridViewTriState.NotSet) { defaultCellStyleTmp.WrapModeInternal = DataGridViewTriState.False; } defaultCellStyleTmp.AddScope(this, DataGridViewCellStyleScopes.DataGridView); return defaultCellStyleTmp; } else { return this.defaultCellStyle; } } set { DataGridViewCellStyle cs = this.DefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.DataGridView); this.defaultCellStyle = value; if (value != null) { this.defaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.DataGridView); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.DefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } private DataGridViewCellStyle DefaultDefaultCellStyle { get { DataGridViewCellStyle defaultCellStyle = new DataGridViewCellStyle(); defaultCellStyle.BackColor = DefaultBackBrush.Color; defaultCellStyle.ForeColor = base.ForeColor; defaultCellStyle.SelectionBackColor = DefaultSelectionBackBrush.Color; defaultCellStyle.SelectionForeColor = DefaultSelectionForeBrush.Color; defaultCellStyle.Font = base.Font; defaultCellStyle.AlignmentInternal = DataGridViewContentAlignment.MiddleLeft; defaultCellStyle.WrapModeInternal = DataGridViewTriState.False; defaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.DataGridView); this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientFont] = true; this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientForeColor] = true; return defaultCellStyle; } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewDefaultCellStyleChangedDescr) ] public event EventHandler DefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDEFAULTCELLSTYLECHANGED, value); } } private static SolidBrush DefaultForeBrush { get { return (SolidBrush) SystemBrushes.WindowText; } } private static Color DefaultGridColor { get { return SystemColors.ControlDark; } } private static SolidBrush DefaultHeadersBackBrush { get { return (SolidBrush) SystemBrushes.Control; } } private DataGridViewCellStyle DefaultRowHeadersDefaultCellStyle { get { DataGridViewCellStyle defaultStyle = new DataGridViewCellStyle(); defaultStyle.BackColor = DefaultHeadersBackBrush.Color; defaultStyle.ForeColor = DefaultForeBrush.Color; defaultStyle.SelectionBackColor = DefaultSelectionBackBrush.Color; defaultStyle.SelectionForeColor = DefaultSelectionForeBrush.Color; defaultStyle.Font = base.Font; defaultStyle.AlignmentInternal = DataGridViewContentAlignment.MiddleLeft; defaultStyle.WrapModeInternal = DataGridViewTriState.True; defaultStyle.AddScope(this, DataGridViewCellStyleScopes.RowHeaders); this.dataGridViewState1[DATAGRIDVIEWSTATE1_ambientRowHeadersFont] = true; return defaultStyle; } } private static SolidBrush DefaultSelectionBackBrush { get { return (SolidBrush) SystemBrushes.Highlight; } } private static SolidBrush DefaultSelectionForeBrush { get { return (SolidBrush) SystemBrushes.HighlightText; } } /// protected override Size DefaultSize { get { return new Size(240, 150); } } internal DisplayedBandsData DisplayedBandsInfo { get { return this.displayedBandsInfo; } } /// /// /// Returns the client rect of the display area of the control. /// The DataGridView control return its client rectangle minus the potential scrollbars. /// public override Rectangle DisplayRectangle { get { Rectangle rectDisplay = this.ClientRectangle; if (this.horizScrollBar != null && this.horizScrollBar.Visible) { rectDisplay.Height -= this.horizScrollBar.Height; } if (this.vertScrollBar != null && this.vertScrollBar.Visible) { rectDisplay.Width -= this.vertScrollBar.Width; if (this.RightToLeftInternal) { rectDisplay.X = this.vertScrollBar.Width; } } return rectDisplay; } } ///[ SRCategory(SR.CatBehavior), DefaultValue(DataGridViewEditMode.EditOnKeystrokeOrF2), SRDescription(SR.DataGridView_EditModeDescr) ] public DataGridViewEditMode EditMode { get { return this.editMode; } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewEditMode.EditOnEnter, (int)DataGridViewEditMode.EditProgrammatically)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewEditMode)); } if (this.editMode != value) { this.editMode = value; OnEditModeChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_EditModeChangedDescr) ] public event EventHandler EditModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWEDITMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWEDITMODECHANGED, value); } } internal Point MouseEnteredCellAddress { get { return this.ptMouseEnteredCell; } } private bool MouseOverEditingControl { get { if (this.editingControl != null) { Point ptMouse = PointToClient(Control.MousePosition); return this.editingControl.Bounds.Contains(ptMouse); } return false; } } private bool MouseOverEditingPanel { get { if (this.editingPanel != null) { Point ptMouse = PointToClient(Control.MousePosition); return this.editingPanel.Bounds.Contains(ptMouse); } return false; } } private bool MouseOverScrollBar { get { Point ptMouse = PointToClient(Control.MousePosition); if (this.vertScrollBar != null && this.vertScrollBar.Visible) { if (this.vertScrollBar.Bounds.Contains(ptMouse)) { return true; } } if (this.horizScrollBar != null && this.horizScrollBar.Visible) { return this.horizScrollBar.Bounds.Contains(ptMouse); } return false; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public Control EditingControl { get { return this.editingControl; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public Panel EditingPanel { get { if (this.editingPanel == null) { this.editingPanel = new Panel(); this.editingPanel.AccessibleName = SR.GetString(SR.DataGridView_AccEditingPanelAccName); } return this.editingPanel; } } /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(true), SRDescription(SR.DataGridView_EnableHeadersVisualStylesDescr) ] public bool EnableHeadersVisualStyles { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_enableHeadersVisualStyles]; } set { if (this.dataGridViewState2[DATAGRIDVIEWSTATE2_enableHeadersVisualStyles] != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_enableHeadersVisualStyles] = value; //OnEnableHeadersVisualStylesChanged(EventArgs.Empty); // Some autosizing may have to be applied since the margins are potentially changed. OnGlobalAutoSize(); // Put this into OnEnableHeadersVisualStylesChanged if created. } } } ////// Determines whether the DataGridView's header cells render using XP theming visual styles or not /// when visual styles are enabled in the application. /// ///[ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public DataGridViewCell FirstDisplayedCell { get { Point firstDisplayedCellAddress = this.FirstDisplayedCellAddress; if (firstDisplayedCellAddress.X >= 0) { return this.Rows[firstDisplayedCellAddress.Y].Cells[firstDisplayedCellAddress.X]; // unshares the row of first displayed cell } return null; } set { if (value != null) { DataGridViewCell firstDisplayedCell = value; if (firstDisplayedCell.DataGridView != this) { throw new ArgumentException(SR.GetString(SR.DataGridView_CellDoesNotBelongToDataGridView)); } if (firstDisplayedCell.RowIndex == -1 || firstDisplayedCell.ColumnIndex == -1) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedCellCannotBeAHeaderOrSharedCell)); } Debug.Assert(firstDisplayedCell.RowIndex >= 0 && firstDisplayedCell.RowIndex < this.Rows.Count && firstDisplayedCell.ColumnIndex >= 0 && firstDisplayedCell.ColumnIndex < this.Columns.Count); if (!firstDisplayedCell.Visible) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedCellCannotBeInvisible)); } if (!firstDisplayedCell.Frozen) { if (!this.Rows[firstDisplayedCell.RowIndex].Frozen) { this.FirstDisplayedScrollingRowIndex = firstDisplayedCell.RowIndex; } if (!this.Columns[firstDisplayedCell.ColumnIndex].Frozen) { this.FirstDisplayedScrollingColumnIndex = firstDisplayedCell.ColumnIndex; } } } } } private Point FirstDisplayedCellAddress { get { Point ptFirstDisplayedCellAddress = new Point(-1, -1); ptFirstDisplayedCellAddress.Y = this.Rows.GetFirstRow(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (ptFirstDisplayedCellAddress.Y == -1) { Debug.Assert(this.displayedBandsInfo.NumTotallyDisplayedFrozenRows == 0); if (this.displayedBandsInfo.FirstDisplayedScrollingRow >= 0) { ptFirstDisplayedCellAddress.Y = this.displayedBandsInfo.FirstDisplayedScrollingRow; } #if DEBUG else { Debug.Assert(this.displayedBandsInfo.FirstDisplayedScrollingRow == -1); Debug.Assert(this.displayedBandsInfo.NumDisplayedScrollingRows == 0); Debug.Assert(this.displayedBandsInfo.NumTotallyDisplayedScrollingRows == 0); } #endif } if (ptFirstDisplayedCellAddress.Y >= 0) { ptFirstDisplayedCellAddress.X = this.FirstDisplayedColumnIndex; } return ptFirstDisplayedCellAddress; } } internal int FirstDisplayedColumnIndex { get { if (!this.IsHandleCreated) { return -1; } int firstDisplayedColumnIndex = -1; DataGridViewColumn dataGridViewColumn = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); if (dataGridViewColumn != null) { if (dataGridViewColumn.Frozen) { firstDisplayedColumnIndex = dataGridViewColumn.Index; } else if (this.displayedBandsInfo.FirstDisplayedScrollingCol >= 0) { firstDisplayedColumnIndex = this.displayedBandsInfo.FirstDisplayedScrollingCol; } } #if DEBUG DataGridViewColumn dataGridViewColumnDbg1 = this.Columns.GetFirstColumn(DataGridViewElementStates.Displayed); int firstDisplayedColumnIndexDbg1 = (dataGridViewColumnDbg1 == null) ? -1 : dataGridViewColumnDbg1.Index; int firstDisplayedColumnIndexDbg2 = -1; DataGridViewColumn dataGridViewColumnDbg = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (dataGridViewColumnDbg != null) { firstDisplayedColumnIndexDbg2 = dataGridViewColumnDbg.Index; } else if (this.displayedBandsInfo.FirstDisplayedScrollingCol >= 0) { firstDisplayedColumnIndexDbg2 = this.displayedBandsInfo.FirstDisplayedScrollingCol; } else { Debug.Assert(this.displayedBandsInfo.LastTotallyDisplayedScrollingCol == -1); } Debug.Assert(firstDisplayedColumnIndex == firstDisplayedColumnIndexDbg1 || !this.Visible || this.displayedBandsInfo.Dirty); Debug.Assert(firstDisplayedColumnIndex == firstDisplayedColumnIndexDbg2 || this.displayedBandsInfo.Dirty); #endif return firstDisplayedColumnIndex; } } internal int FirstDisplayedRowIndex { get { if (!this.IsHandleCreated) { return -1; } int firstDisplayedRowIndex = this.Rows.GetFirstRow(DataGridViewElementStates.Visible); if (firstDisplayedRowIndex != -1) { if ((this.Rows.GetRowState(firstDisplayedRowIndex) & DataGridViewElementStates.Frozen) == 0 && this.displayedBandsInfo.FirstDisplayedScrollingRow >= 0) { firstDisplayedRowIndex = this.displayedBandsInfo.FirstDisplayedScrollingRow; } } #if FALSE //DEBUG int firstDisplayedRowIndexDbg1 = this.Rows.GetFirstRow(DataGridViewElementStates.Displayed); int firstDisplayedRowIndexDbg2 = this.Rows.GetFirstRow(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (firstDisplayedRowIndexDbg2 == -1) { if (this.displayedBandsInfo.FirstDisplayedScrollingRow >= 0) { firstDisplayedRowIndexDbg2 = this.displayedBandsInfo.FirstDisplayedScrollingRow; } } Debug.Assert(firstDisplayedRowIndex == firstDisplayedRowIndexDbg1 || !this.Visible || this.displayedBandsInfo.Dirty, "firstDisplayedRowIndex =" + firstDisplayedRowIndex.ToString() + ", firstDisplayedRowIndexDbg1=" + firstDisplayedRowIndexDbg1.ToString()); Debug.Assert(firstDisplayedRowIndex == firstDisplayedRowIndexDbg2 || this.displayedBandsInfo.Dirty, "firstDisplayedRowIndex =" + firstDisplayedRowIndex.ToString() + ", firstDisplayedRowIndexDbg2=" + firstDisplayedRowIndexDbg2.ToString()); #endif return firstDisplayedRowIndex; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int FirstDisplayedScrollingColumnHiddenWidth { get { return this.negOffset; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int FirstDisplayedScrollingColumnIndex { get { return this.displayedBandsInfo.FirstDisplayedScrollingCol; } set { if (value < 0 || value >= this.Columns.Count) { throw new ArgumentOutOfRangeException("value"); } if (!this.Columns[value].Visible) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedScrollingColumnCannotBeInvisible)); } if (this.Columns[value].Frozen) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedScrollingColumnCannotBeFrozen)); } if (!this.IsHandleCreated) { CreateHandle(); } int displayWidth = this.layout.Data.Width; if (displayWidth <= 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_NoRoomForDisplayedColumns)); } int totalVisibleFrozenWidth = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (totalVisibleFrozenWidth >= displayWidth) { Debug.Assert(totalVisibleFrozenWidth > 0); throw new InvalidOperationException(SR.GetString(SR.DataGridView_FrozenColumnsPreventFirstDisplayedScrollingColumn)); } if (value == this.displayedBandsInfo.FirstDisplayedScrollingCol) { return; } if (this.ptCurrentCell.X >= 0 && !CommitEdit(DataGridViewDataErrorContexts.Parsing | DataGridViewDataErrorContexts.Commit | DataGridViewDataErrorContexts.Scroll, false /*forCurrentCellChange*/, false /*forCurrentRowChange*/)) { // Could not commit edited cell value - return silently // [....]: should we throw an error here? return; } if (IsColumnOutOfBounds(value)) { return; } bool success = ScrollColumnIntoView(value, -1, /*committed*/ true, false /*forCurrentCellChange*/); Debug.Assert(success); Debug.Assert(this.displayedBandsInfo.FirstDisplayedScrollingCol >= 0); Debug.Assert(this.displayedBandsInfo.FirstDisplayedScrollingCol == value || this.Columns.DisplayInOrder(this.displayedBandsInfo.FirstDisplayedScrollingCol, value)); int maxHorizontalOffset = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - displayWidth; while (this.displayedBandsInfo.FirstDisplayedScrollingCol != value && this.HorizontalOffset < maxHorizontalOffset) { ScrollColumns(1); } } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int FirstDisplayedScrollingRowIndex { get { return this.displayedBandsInfo.FirstDisplayedScrollingRow; } set { if (value < 0 || value >= this.Rows.Count) { throw new ArgumentOutOfRangeException("value"); } if ((this.Rows.GetRowState(value) & DataGridViewElementStates.Visible) == 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedScrollingRowCannotBeInvisible)); } if ((this.Rows.GetRowState(value) & DataGridViewElementStates.Frozen) != 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_FirstDisplayedScrollingRowCannotBeFrozen)); } if (!this.IsHandleCreated) { CreateHandle(); } int displayHeight = this.layout.Data.Height; if (displayHeight <= 0) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_NoRoomForDisplayedRows)); } int totalVisibleFrozenHeight = this.Rows.GetRowsHeight(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); if (totalVisibleFrozenHeight >= displayHeight) { Debug.Assert(totalVisibleFrozenHeight > 0); throw new InvalidOperationException(SR.GetString(SR.DataGridView_FrozenRowsPreventFirstDisplayedScrollingRow)); } if (value == this.displayedBandsInfo.FirstDisplayedScrollingRow) { return; } if (this.ptCurrentCell.X >= 0 && !CommitEdit(DataGridViewDataErrorContexts.Parsing | DataGridViewDataErrorContexts.Commit | DataGridViewDataErrorContexts.Scroll, false /*forCurrentCellChange*/, false /*forCurrentRowChange*/)) { // Could not commit edited cell value - return silently // [....]: should we throw an error here? return; } if (IsRowOutOfBounds(value)) { return; } Debug.Assert(this.displayedBandsInfo.FirstDisplayedScrollingRow >= 0); if (value > this.displayedBandsInfo.FirstDisplayedScrollingRow) { int rowsToScroll = this.Rows.GetRowCount(DataGridViewElementStates.Visible, this.displayedBandsInfo.FirstDisplayedScrollingRow, value); Debug.Assert(rowsToScroll != 0); ScrollRowsByCount(rowsToScroll, rowsToScroll > 1 ? ScrollEventType.LargeIncrement : ScrollEventType.SmallIncrement); } else { bool success = ScrollRowIntoView(-1, value, /*committed*/ true, false /*forCurrentCellChange*/); Debug.Assert(success); } } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public override Color ForeColor { get { return base.ForeColor; } set { base.ForeColor = value; } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] new public event EventHandler ForeColorChanged { add { base.ForeColorChanged += value; } remove { base.ForeColorChanged -= value; } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public override Font Font { get { return base.Font; } set { base.Font = value; } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] new public event EventHandler FontChanged { add { base.FontChanged += value; } remove { base.FontChanged -= value; } } /// /// /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridViewGridColorDescr) ] public Color GridColor { get { return this.gridPen.Color; } set { if (value.IsEmpty) { throw new ArgumentException(SR.GetString(SR.DataGridView_EmptyColor, "GridColor")); } if (value.A < 255) { throw new ArgumentException(SR.GetString(SR.DataGridView_TransparentColor, "GridColor")); } if (!value.Equals(this.gridPen.Color)) { this.gridPen = new Pen(value); OnGridColorChanged(EventArgs.Empty); } } } ///Gets or sets the grid color of the dataGridView (when Single mode is used). ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnGridColorChangedDescr) ] public event EventHandler GridColorChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWGRIDCOLORCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWGRIDCOLORCHANGED, value); } } /// private bool ShouldSerializeGridColor() { return !this.GridPen.Color.Equals(DefaultGridColor); } internal Pen GridPen { get { return this.gridPen; } } internal int HorizontalOffset { get { return this.horizontalOffset; } set { if (value < 0) { value = 0; } int widthNotVisible = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - this.layout.Data.Width; if (value > widthNotVisible && widthNotVisible > 0) { value = widthNotVisible; } if (value == this.horizontalOffset) { return; } ScrollEventType scrollEventType; int oldFirstVisibleScrollingCol = this.displayedBandsInfo.FirstDisplayedScrollingCol; int change = this.horizontalOffset - value; if (this.horizScrollBar.Enabled) { this.horizScrollBar.Value = value; } this.horizontalOffset = value; int totalVisibleFrozenWidth = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); Rectangle rectTmp = this.layout.Data; if (this.layout.ColumnHeadersVisible) { // column headers must scroll as well rectTmp = Rectangle.Union(rectTmp, this.layout.ColumnHeaders); } else if (this.SingleVerticalBorderAdded) { if (!this.RightToLeftInternal) { rectTmp.X--; } rectTmp.Width++; } if (this.SingleVerticalBorderAdded && totalVisibleFrozenWidth > 0) { if (!this.RightToLeftInternal) { rectTmp.X++; } rectTmp.Width--; } if (!this.RightToLeftInternal) { rectTmp.X += totalVisibleFrozenWidth; } rectTmp.Width -= totalVisibleFrozenWidth; this.displayedBandsInfo.FirstDisplayedScrollingCol = ComputeFirstVisibleScrollingColumn(); // update the lastTotallyDisplayedScrollingCol ComputeVisibleColumns(); if (this.editingControl != null && !this.Columns[this.ptCurrentCell.X].Frozen && this.displayedBandsInfo.FirstDisplayedScrollingCol > -1) { PositionEditingControl(true /*setLocation*/, false /*setSize*/, false /*setFocus*/); } // The mouse probably is not over the same cell after the scroll. UpdateMouseEnteredCell(null /*HitTestInfo*/, null /*MouseEventArgs*/); if (oldFirstVisibleScrollingCol == this.displayedBandsInfo.FirstDisplayedScrollingCol) { scrollEventType = change > 0 ? ScrollEventType.SmallIncrement : ScrollEventType.SmallDecrement; } else if (this.Columns.DisplayInOrder(oldFirstVisibleScrollingCol, this.displayedBandsInfo.FirstDisplayedScrollingCol)) { scrollEventType = this.Columns.GetColumnCount(DataGridViewElementStates.Visible, oldFirstVisibleScrollingCol, this.displayedBandsInfo.FirstDisplayedScrollingCol) > 1 ? ScrollEventType.LargeIncrement : ScrollEventType.SmallIncrement; } else { Debug.Assert(this.Columns.DisplayInOrder(this.displayedBandsInfo.FirstDisplayedScrollingCol, oldFirstVisibleScrollingCol)); scrollEventType = this.Columns.GetColumnCount(DataGridViewElementStates.Visible, this.displayedBandsInfo.FirstDisplayedScrollingCol, oldFirstVisibleScrollingCol) > 1 ? ScrollEventType.LargeDecrement : ScrollEventType.SmallDecrement; } NativeMethods.RECT[] rects = CreateScrollableRegion(rectTmp); if (this.RightToLeftInternal) { change = -change; } ScrollRectangles(rects, change); if (!this.dataGridViewState2[DATAGRIDVIEWSTATE2_stopRaisingHorizontalScroll]) { OnScroll(scrollEventType, this.horizontalOffset + change, this.horizontalOffset, ScrollOrientation.HorizontalScroll); } FlushDisplayedChanged(); } } /// protected ScrollBar HorizontalScrollBar { get { return this.horizScrollBar; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int HorizontalScrollingOffset { get { return this.horizontalOffset; } set { // int widthNotVisible = this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - this.layout.Data.Width; if (value < 0) { throw new ArgumentOutOfRangeException("HorizontalScrollingOffset", SR.GetString(SR.InvalidLowBoundArgumentEx, "HorizontalScrollingOffset", (value).ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture))); } // Intentionally ignoring the out of range situation. // else if (value > widthNotVisible && widthNotVisible > 0) //{ // throw new ArgumentOutOfRangeException(SR.GetString(SR.DataGridView_PropertyTooLarge, "HorizontalScrollingOffset", (widthNotVisible).ToString())); //} else if (value > 0 && (this.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - this.layout.Data.Width) <= 0) { // Intentionally ignoring the case where dev tries to set value while there is no horizontal scrolling possible. // throw new ArgumentOutOfRangeException("HorizontalScrollingOffset", SR.GetString(SR.DataGridView_PropertyMustBeZero)); Debug.Assert(this.horizontalOffset == 0); return; } if (value == this.horizontalOffset) { return; } this.HorizontalOffset = value; } } private System.Windows.Forms.Timer HorizScrollTimer { get { if (this.horizScrollTimer == null) { this.horizScrollTimer = new System.Windows.Forms.Timer(); this.horizScrollTimer.Tick += new System.EventHandler(HorizScrollTimer_Tick); } return this.horizScrollTimer; } } private bool InAdjustFillingColumns { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inAdjustFillingColumn] || this.dataGridViewOper[DATAGRIDVIEWOPER_inAdjustFillingColumns]; } } internal bool InBeginEdit { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inBeginEdit]; } } internal bool InDisplayIndexAdjustments { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inDisplayIndexAdjustments]; } set { this.dataGridViewOper[DATAGRIDVIEWOPER_inDisplayIndexAdjustments] = value; } } internal bool InEndEdit { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inEndEdit]; } } private DataGridViewCellStyle InheritedEditingCellStyle { get { if (this.ptCurrentCell.X == -1) { return null; } return this.CurrentCellInternal.GetInheritedStyleInternal(this.ptCurrentCell.Y); } } internal bool InInitialization { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing]; } } internal bool InSortOperation { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_inSort]; } } /// [Browsable(false)] public bool IsCurrentCellDirty { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedCellChanged]; } } private bool IsCurrentCellDirtyInternal { set { if (value != this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedCellChanged]) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedCellChanged] = value; OnCurrentCellDirtyStateChanged(EventArgs.Empty); } } } /// [Browsable(false)] public bool IsCurrentCellInEditMode { get { return this.editingControl != null || this.dataGridViewState1[DATAGRIDVIEWSTATE1_currentCellInEditMode]; } } /// // Only used in bound scenarios, when binding to a IEditableObject [Browsable(false)] public bool IsCurrentRowDirty { get { if (!this.VirtualMode) { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedRowChanged] || this.IsCurrentCellDirty; } else { QuestionEventArgs qe = new QuestionEventArgs(this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedRowChanged] || this.IsCurrentCellDirty); OnRowDirtyStateNeeded(qe); return qe.Response; } } } internal bool IsCurrentRowDirtyInternal { set { if (value != this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedRowChanged]) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_editedRowChanged] = value; if (this.RowHeadersVisible && this.ShowEditingIcon && this.ptCurrentCell.Y >= 0) { // Force the pencil to appear in the row header InvalidateCellPrivate(-1, this.ptCurrentCell.Y); } } } } private bool IsEscapeKeyEffective { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_trackColResize] || this.dataGridViewOper[DATAGRIDVIEWOPER_trackRowResize] || this.dataGridViewOper[DATAGRIDVIEWOPER_trackColHeadersResize] || this.dataGridViewOper[DATAGRIDVIEWOPER_trackRowHeadersResize] || this.dataGridViewOper[DATAGRIDVIEWOPER_trackColRelocation] || this.IsCurrentCellDirty || ((this.VirtualMode || this.DataSource != null) && this.IsCurrentRowDirty) || (this.EditMode != DataGridViewEditMode.EditOnEnter && this.editingControl != null || this.dataGridViewState1[DATAGRIDVIEWSTATE1_newRowEdited]); } } private bool IsMinimized { get { Form parentForm = this.TopLevelControlInternal as Form; return parentForm != null && parentForm.WindowState == FormWindowState.Minimized; } } internal bool IsRestricted { get { if (!this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestrictedChecked]) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestricted] = false; try { IntSecurity.AllWindows.Demand(); } catch (SecurityException) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestricted] = true; } catch { this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestricted] = true; // To be on the safe side this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestrictedChecked] = true; throw; } this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestrictedChecked] = true; } return this.dataGridViewState1[DATAGRIDVIEWSTATE1_isRestricted]; } } private bool IsSharedCellReadOnly(DataGridViewCell dataGridViewCell, int rowIndex) { Debug.Assert(dataGridViewCell != null); Debug.Assert(rowIndex >= 0); DataGridViewElementStates rowState = this.Rows.GetRowState(rowIndex); return this.ReadOnly || (rowState & DataGridViewElementStates.ReadOnly) != 0 || (dataGridViewCell.OwningColumn != null && dataGridViewCell.OwningColumn.ReadOnly) || dataGridViewCell.StateIncludes(DataGridViewElementStates.ReadOnly); } internal bool IsSharedCellSelected(DataGridViewCell dataGridViewCell, int rowIndex) { Debug.Assert(dataGridViewCell != null); Debug.Assert(rowIndex >= 0); DataGridViewElementStates rowState = this.Rows.GetRowState(rowIndex); return (rowState & DataGridViewElementStates.Selected) != 0 || (dataGridViewCell.OwningColumn != null && dataGridViewCell.OwningColumn.Selected) || dataGridViewCell.StateIncludes(DataGridViewElementStates.Selected); } internal bool IsSharedCellVisible(DataGridViewCell dataGridViewCell, int rowIndex) { Debug.Assert(dataGridViewCell != null); Debug.Assert(rowIndex >= 0); DataGridViewElementStates rowState = this.Rows.GetRowState(rowIndex); return (rowState & DataGridViewElementStates.Visible) != 0 && (dataGridViewCell.OwningColumn != null && dataGridViewCell.OwningColumn.Visible); } internal LayoutData LayoutInfo { get { if (this.layout.dirty && this.IsHandleCreated) { PerformLayoutPrivate(false /*useRowShortcut*/, true /*computeVisibleRows*/, false /*invalidInAdjustFillingColumns*/, false /*repositionEditingControl*/); } return this.layout; } } internal Point MouseDownCellAddress { get { return this.ptMouseDownCell; } } /// [ SRCategory(SR.CatBehavior), DefaultValue(true), SRDescription(SR.DataGridView_MultiSelectDescr) ] public bool MultiSelect { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_multiSelect]; } set { if (this.MultiSelect != value) { ClearSelection(); this.dataGridViewState1[DATAGRIDVIEWSTATE1_multiSelect] = value; OnMultiSelectChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnMultiSelectChangedDescr) ] public event EventHandler MultiSelectChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWMULTISELECTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWMULTISELECTCHANGED, value); } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int NewRowIndex { get { return this.newRowIndex; } } internal bool NoDimensionChangeAllowed { get { return this.noDimensionChangeCount > 0; } } private int NoSelectionChangeCount { get { return this.noSelectionChangeCount; } set { Debug.Assert(value >= 0); this.noSelectionChangeCount = value; if (value == 0) { FlushSelectionChanged(); } } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public new Padding Padding { get { return base.Padding; } set { base.Padding = value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public new event EventHandler PaddingChanged { add { base.PaddingChanged += value; } remove { base.PaddingChanged -= value; } } internal DataGridViewCellStyle PlaceholderCellStyle { get { if (this.placeholderCellStyle == null) { this.placeholderCellStyle = new DataGridViewCellStyle(); } return this.placeholderCellStyle; } } /// [ Browsable(true), DefaultValue(false), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_ReadOnlyDescr) ] public bool ReadOnly { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_readOnly]; } set { if (value != this.dataGridViewState1[DATAGRIDVIEWSTATE1_readOnly]) { if (value && this.ptCurrentCell.X != -1 && this.IsCurrentCellInEditMode) { // Current cell becomes read-only. Exit editing mode. if (!EndEdit(DataGridViewDataErrorContexts.Parsing | DataGridViewDataErrorContexts.Commit, DataGridViewValidateCellInternal.Always /*validateCell*/, false /*fireCellLeave*/, false /*fireCellEnter*/, false /*fireRowLeave*/, false /*fireRowEnter*/, false /*fireLeave*/, true /*keepFocus*/, false /*resetCurrentCell*/, false /*resetAnchorCell*/)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CommitFailedCannotCompleteOperation)); } } this.dataGridViewState1[DATAGRIDVIEWSTATE1_readOnly] = value; if (value) { try { this.dataGridViewOper[DATAGRIDVIEWOPER_inReadOnlyChange] = true; for (int columnIndex = 0; columnIndex < this.Columns.Count; columnIndex++) { SetReadOnlyColumnCore(columnIndex, false); } int rowCount = this.Rows.Count; for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { SetReadOnlyRowCore(rowIndex, false); } } finally { this.dataGridViewOper[DATAGRIDVIEWOPER_inReadOnlyChange] = false; } } #if DEBUG else { Debug.Assert(this.individualReadOnlyCells.Count == 0); for (int columnIndex = 0; columnIndex < this.Columns.Count; columnIndex++) { Debug.Assert(this.Columns[columnIndex].ReadOnly == false); } int rowCount = this.Rows.Count; for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { Debug.Assert((this.Rows.GetRowState(rowIndex) & DataGridViewElementStates.ReadOnly) == 0); } } #endif OnReadOnlyChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewOnReadOnlyChangedDescr) ] public event EventHandler ReadOnlyChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWREADONLYCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWREADONLYCHANGED, value); } } private void ResetCurrentCell() { if (this.ptCurrentCell.X != -1 && !SetCurrentCellAddressCore(-1, -1, true /*setAnchorCellAddress*/, true /*validateCurrentCell*/, false /*throughMouseClick*/)) { // Edited value couldn't be committed or aborted throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } } internal bool ResizingOperationAboutToStart { get { return this.dataGridViewOper[DATAGRIDVIEWOPER_resizingOperationAboutToStart]; } } internal bool RightToLeftInternal { get { if (this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftValid]) { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftMode]; } this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftMode] = (this.RightToLeft == RightToLeft.Yes); this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftValid] = true; return this.dataGridViewState2[DATAGRIDVIEWSTATE2_rightToLeftMode]; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Advanced), DefaultValue(0) ] public int RowCount { get { return this.Rows.Count; } set { if (this.AllowUserToAddRowsInternal) { if (value < 1) { throw new ArgumentOutOfRangeException("RowCount", SR.GetString(SR.InvalidLowBoundArgumentEx, "RowCount", value.ToString(CultureInfo.CurrentCulture), (1).ToString(CultureInfo.CurrentCulture))); } } else { if (value < 0) { throw new ArgumentOutOfRangeException("RowCount", SR.GetString(SR.InvalidLowBoundArgumentEx, "RowCount", value.ToString(CultureInfo.CurrentCulture), (0).ToString(CultureInfo.CurrentCulture))); } } if (this.DataSource != null) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CannotSetRowCountOnDataBoundDataGridView)); } if (value != this.Rows.Count) { if (value == 0) { // Total removal of the rows. this.Rows.Clear(); } else if (value < this.Rows.Count) { // Some rows need to be removed, from the tail of the rows collection while (value < this.Rows.Count) { int currentRowCount = this.Rows.Count; this.Rows.RemoveAt(currentRowCount - (this.AllowUserToAddRowsInternal ? 2 : 1)); if (this.Rows.Count >= currentRowCount) { // Row removal failed. We stop the loop. break; } } } else { // Some rows need to be appened. if (this.Columns.Count == 0) { // There are no columns yet, we simply create a single DataGridViewTextBoxColumn. DataGridViewTextBoxColumn dataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); this.Columns.Add(dataGridViewTextBoxColumn); } int rowsToAdd = value - this.Rows.Count; if (rowsToAdd > 0) { this.Rows.Add(rowsToAdd); } } } } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_RowHeadersBorderStyleDescr), Browsable(true), DefaultValue(DataGridViewHeaderBorderStyle.Raised) ] public DataGridViewHeaderBorderStyle RowHeadersBorderStyle { get { switch (this.advancedRowHeadersBorderStyle.All) { case DataGridViewAdvancedCellBorderStyle.NotSet: return DataGridViewHeaderBorderStyle.Custom; case DataGridViewAdvancedCellBorderStyle.None: return DataGridViewHeaderBorderStyle.None; case DataGridViewAdvancedCellBorderStyle.Single: return DataGridViewHeaderBorderStyle.Single; case DataGridViewAdvancedCellBorderStyle.InsetDouble: return DataGridViewHeaderBorderStyle.Sunken; case DataGridViewAdvancedCellBorderStyle.OutsetPartial: return DataGridViewHeaderBorderStyle.Raised; default: return DataGridViewHeaderBorderStyle.Custom; } } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewHeaderBorderStyle.Custom, (int)DataGridViewHeaderBorderStyle.None)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewHeaderBorderStyle)); } if (value != this.RowHeadersBorderStyle) { if (value == DataGridViewHeaderBorderStyle.Custom) { throw new ArgumentException(SR.GetString(SR.DataGridView_CustomCellBorderStyleInvalid, "RowHeadersBorderStyle")); } this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = true; try { switch (value) { case DataGridViewHeaderBorderStyle.Single: this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single; break; case DataGridViewHeaderBorderStyle.Raised: this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.OutsetPartial; break; case DataGridViewHeaderBorderStyle.Sunken: this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.InsetDouble; break; case DataGridViewHeaderBorderStyle.None: this.advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None; break; } } finally { this.dataGridViewOper[DATAGRIDVIEWOPER_inBorderStyleChange] = false; } OnRowHeadersBorderStyleChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowHeadersBorderStyleChangedDescr) ] public event EventHandler RowHeadersBorderStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERSBORDERSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERSBORDERSTYLECHANGED, value); } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_RowHeadersDefaultCellStyleDescr), AmbientValue(null) ] public DataGridViewCellStyle RowHeadersDefaultCellStyle { get { if (this.rowHeadersDefaultCellStyle == null) { this.rowHeadersDefaultCellStyle = this.DefaultRowHeadersDefaultCellStyle; } return this.rowHeadersDefaultCellStyle; } set { DataGridViewCellStyle cs = this.RowHeadersDefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.RowHeaders); this.rowHeadersDefaultCellStyle = value; if (value != null) { this.rowHeadersDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.RowHeaders); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.RowHeadersDefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnRowHeadersDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewRowHeadersDefaultCellStyleChangedDescr) ] public event EventHandler RowHeadersDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERSDEFAULTCELLSTYLECHANGED, value); } } /// /// /// [ SRCategory(SR.CatAppearance), DefaultValue(true), SRDescription(SR.DataGridViewRowHeadersVisibleDescr) ] public bool RowHeadersVisible { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_rowHeadersVisible]; } set { if (this.RowHeadersVisible != value) { if (!value && (this.autoSizeRowsMode == DataGridViewAutoSizeRowsMode.AllHeaders || this.autoSizeRowsMode == DataGridViewAutoSizeRowsMode.DisplayedHeaders)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_RowHeadersCannotBeInvisible)); } using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.RowHeadersVisible)) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_rowHeadersVisible] = value; this.layout.RowHeadersVisible = value; this.displayedBandsInfo.EnsureDirtyState(); if (!this.AutoSize) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); } InvalidateInside(); OnRowHeadersGlobalAutoSize(value /*expandingRows*/); } } } } ////// Gets or sets a value indicating whether the dataGridView's row headers are /// visible. /// ///[ SRCategory(SR.CatLayout), Localizable(true), SRDescription(SR.DataGridView_RowHeadersWidthDescr) ] public int RowHeadersWidth { get { return this.rowHeadersWidth; } set { if (value < minimumRowHeadersWidth) { throw new ArgumentOutOfRangeException("RowHeadersWidth", SR.GetString(SR.InvalidLowBoundArgumentEx, "RowHeadersWidth", (value).ToString(CultureInfo.CurrentCulture), (minimumRowHeadersWidth).ToString(CultureInfo.CurrentCulture))); } if (value > maxHeadersThickness) { throw new ArgumentOutOfRangeException("RowHeadersWidth", SR.GetString(SR.InvalidHighBoundArgumentEx, "RowHeadersWidth", (value).ToString(CultureInfo.CurrentCulture), (maxHeadersThickness).ToString(CultureInfo.CurrentCulture))); } if (this.RowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.EnableResizing && this.RowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.DisableResizing) { this.cachedRowHeadersWidth = value; } else if (this.rowHeadersWidth != value) { this.RowHeadersWidthInternal = value; } } } private int RowHeadersWidthInternal { set { using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.RowHeadersWidth)) { Debug.Assert(this.rowHeadersWidth != value); Debug.Assert(value >= minimumRowHeadersWidth); this.rowHeadersWidth = value; if (this.AutoSize) { InvalidateInside(); } else { if (this.layout.RowHeadersVisible) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); InvalidateInside(); } } OnRowHeadersWidthChanged(EventArgs.Empty); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewRowHeadersWidthChangedDescr) ] public event EventHandler RowHeadersWidthChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERSWIDTHCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERSWIDTHCHANGED, value); } } private bool ShouldSerializeRowHeadersWidth() { return (this.rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.EnableResizing || this.rowHeadersWidthSizeMode == DataGridViewRowHeadersWidthSizeMode.DisableResizing) && defaultRowHeadersWidth != this.RowHeadersWidth; } /// /// /// [ DefaultValue(DataGridViewRowHeadersWidthSizeMode.EnableResizing), RefreshProperties(RefreshProperties.All), SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_RowHeadersWidthSizeModeDescr) ] public DataGridViewRowHeadersWidthSizeMode RowHeadersWidthSizeMode { get { return this.rowHeadersWidthSizeMode; } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewRowHeadersWidthSizeMode.EnableResizing, (int)DataGridViewRowHeadersWidthSizeMode.AutoSizeToFirstHeader)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewRowHeadersWidthSizeMode)); } if (this.rowHeadersWidthSizeMode != value) { /*if (value != DataGridViewRowHeadersWidthSizeMode.EnableResizing && * value != DataGridViewRowHeadersWidthSizeMode.DisableResizing && * !this.RowHeadersVisible) { We intentionally don't throw an error because of designer code spit order. }*/ DataGridViewAutoSizeModeEventArgs dgvasme = new DataGridViewAutoSizeModeEventArgs(this.rowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.EnableResizing && this.rowHeadersWidthSizeMode != DataGridViewRowHeadersWidthSizeMode.DisableResizing); this.rowHeadersWidthSizeMode = value; OnRowHeadersWidthSizeModeChanged(dgvasme); } } } ////// Gets or sets a value that determines the behavior for adjusting the row headers width. /// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowHeadersWidthSizeModeChangedDescr) ] public event DataGridViewAutoSizeModeEventHandler RowHeadersWidthSizeModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERSWIDTHSIZEMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERSWIDTHSIZEMODECHANGED, value); } } /// [ Browsable(false) ] public DataGridViewRowCollection Rows { get { if (this.dataGridViewRows == null) { this.dataGridViewRows = CreateRowsInstance(); } return this.dataGridViewRows; } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_RowsDefaultCellStyleDescr) ] public DataGridViewCellStyle RowsDefaultCellStyle { get { if (this.rowsDefaultCellStyle == null) { this.rowsDefaultCellStyle = new DataGridViewCellStyle(); this.rowsDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.Rows); } return this.rowsDefaultCellStyle; } set { DataGridViewCellStyle cs = this.RowsDefaultCellStyle; cs.RemoveScope(DataGridViewCellStyleScopes.Rows); this.rowsDefaultCellStyle = value; if (value != null) { this.rowsDefaultCellStyle.AddScope(this, DataGridViewCellStyleScopes.Rows); } DataGridViewCellStyleDifferences dgvcsc = cs.GetDifferencesFrom(this.RowsDefaultCellStyle); if (dgvcsc != DataGridViewCellStyleDifferences.None) { this.CellStyleChangedEventArgs.ChangeAffectsPreferredSize = (dgvcsc == DataGridViewCellStyleDifferences.AffectPreferredSize); OnRowsDefaultCellStyleChanged(this.CellStyleChangedEventArgs); } } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewRowsDefaultCellStyleChangedDescr) ] public event EventHandler RowsDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWSDEFAULTCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatAppearance), Browsable(true), SRDescription(SR.DataGridView_RowTemplateDescr), DesignerSerializationVisibility(DesignerSerializationVisibility.Content) ] public DataGridViewRow RowTemplate { get { if (this.rowTemplate == null) { this.rowTemplate = new DataGridViewRow(); } return this.rowTemplate; } set { DataGridViewRow dataGridViewRow = value; if (dataGridViewRow != null) { if (dataGridViewRow.DataGridView != null) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_RowAlreadyBelongsToDataGridView)); } //if (dataGridViewRow.Selected) //{ // throw new InvalidOperationException(SR.GetString(SR.DataGridView_RowTemplateCannotBeSelected)); //} } this.rowTemplate = dataGridViewRow; } } private bool ShouldSerializeRowTemplate() { return this.rowTemplate != null; } internal DataGridViewRow RowTemplateClone { get { DataGridViewRow rowTemplateClone = (DataGridViewRow) this.RowTemplate.Clone(); CompleteCellsCollection(rowTemplateClone); return rowTemplateClone; } } /// /// /// Possible return values are given by the ScrollBars enumeration. /// [ DefaultValue(ScrollBars.Both), Localizable(true), SRCategory(SR.CatLayout), SRDescription(SR.DataGridView_ScrollBarsDescr) ] public ScrollBars ScrollBars { get { return this.scrollBars; } set { // Sequential enum. Valid values are 0x0 to 0x3 if (!ClientUtils.IsEnumValid(value, (int)value, (int)ScrollBars.None, (int)ScrollBars.Both)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(ScrollBars)); } if (this.scrollBars != value) { using (LayoutTransaction.CreateTransactionIf(this.AutoSize, this.ParentInternal, this, PropertyNames.ScrollBars)) { // Before changing the value of this.scrollBars, we scroll to the top-left cell to // avoid inconsitent state of scrollbars. DataGridViewColumn dataGridViewColumn = this.Columns.GetFirstColumn(DataGridViewElementStates.Visible); int firstVisibleRowIndex = this.Rows.GetFirstRow(DataGridViewElementStates.Visible); if (dataGridViewColumn != null && firstVisibleRowIndex != -1) { if (!ScrollIntoView(dataGridViewColumn.Index, firstVisibleRowIndex, false)) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_CellChangeCannotBeCommittedOrAborted)); } } Debug.Assert(this.HorizontalOffset == 0); Debug.Assert(this.VerticalOffset == 0); this.scrollBars = value; if (!this.AutoSize) { PerformLayoutPrivate(false /*useRowShortcut*/, false /*computeVisibleRows*/, true /*invalidInAdjustFillingColumns*/, true /*repositionEditingControl*/); } Invalidate(); } } } } ///[ Browsable(false) ] public DataGridViewSelectedCellCollection SelectedCells { [ SuppressMessage("Microsoft.Performance", "CA1817:DoNotCallPropertiesThatCloneValuesInLoops"), // not legitimate SuppressMessage("Microsoft.Performance", "CA1808:AvoidCallsThatBoxValueTypes") // consider using generics instead of DataGridViewIntLinkedList ] get { DataGridViewSelectedCellCollection stcc = new DataGridViewSelectedCellCollection(); switch (this.SelectionMode) { case DataGridViewSelectionMode.CellSelect: { // Note: If we change the design and decide that SelectAll() should use band selection, // we need to add those to the selected cells. stcc.AddCellLinkedList(this.individualSelectedCells); break; } case DataGridViewSelectionMode.FullColumnSelect: case DataGridViewSelectionMode.ColumnHeaderSelect: { foreach (int columnIndex in this.selectedBandIndexes) { foreach (DataGridViewRow dataGridViewRow in this.Rows) // unshares all rows! { stcc.Add(dataGridViewRow.Cells[columnIndex]); } } if (this.SelectionMode == DataGridViewSelectionMode.ColumnHeaderSelect) { stcc.AddCellLinkedList(this.individualSelectedCells); } break; } case DataGridViewSelectionMode.FullRowSelect: case DataGridViewSelectionMode.RowHeaderSelect: { foreach (int rowIndex in this.selectedBandIndexes) { DataGridViewRow dataGridViewRow = (DataGridViewRow) this.Rows[rowIndex]; // unshares the selected row foreach (DataGridViewCell dataGridViewCell in dataGridViewRow.Cells) { stcc.Add(dataGridViewCell); } } if (this.SelectionMode == DataGridViewSelectionMode.RowHeaderSelect) { stcc.AddCellLinkedList(this.individualSelectedCells); } break; } } return stcc; } } /// [ Browsable(false) ] public DataGridViewSelectedColumnCollection SelectedColumns { [ SuppressMessage("Microsoft.Performance", "CA1808:AvoidCallsThatBoxValueTypes") // consider using generics instead of DataGridViewIntLinkedList ] get { DataGridViewSelectedColumnCollection strc = new DataGridViewSelectedColumnCollection(); switch (this.SelectionMode) { case DataGridViewSelectionMode.CellSelect: case DataGridViewSelectionMode.FullRowSelect: case DataGridViewSelectionMode.RowHeaderSelect: break; case DataGridViewSelectionMode.FullColumnSelect: case DataGridViewSelectionMode.ColumnHeaderSelect: foreach (int columnIndex in this.selectedBandIndexes) { strc.Add(this.Columns[columnIndex]); } break; } return strc; } } /// [ Browsable(false), ] public DataGridViewSelectedRowCollection SelectedRows { [ SuppressMessage("Microsoft.Performance", "CA1808:AvoidCallsThatBoxValueTypes"), // using specialized DataGridViewIntLinkedList class instead of generics SuppressMessage("Microsoft.Performance", "CA1817:DoNotCallPropertiesThatCloneValuesInLoops") // not legitimate ] get { DataGridViewSelectedRowCollection strc = new DataGridViewSelectedRowCollection(); switch (this.SelectionMode) { case DataGridViewSelectionMode.CellSelect: case DataGridViewSelectionMode.FullColumnSelect: case DataGridViewSelectionMode.ColumnHeaderSelect: break; case DataGridViewSelectionMode.FullRowSelect: case DataGridViewSelectionMode.RowHeaderSelect: foreach (int rowIndex in this.selectedBandIndexes) { strc.Add((DataGridViewRow) this.Rows[rowIndex]); // unshares the selected row } break; } return strc; } } /// [ Browsable(true), SRCategory(SR.CatBehavior), DefaultValue(DataGridViewSelectionMode.RowHeaderSelect), SRDescription(SR.DataGridView_SelectionModeDescr) ] public DataGridViewSelectionMode SelectionMode { get { return this.selectionMode; } set { // Sequential enum. Valid values are 0x0 to 0x4 if (!ClientUtils.IsEnumValid(value, (int)value, (int)DataGridViewSelectionMode.CellSelect, (int)DataGridViewSelectionMode.ColumnHeaderSelect)) { throw new InvalidEnumArgumentException("value", (int)value, typeof(DataGridViewSelectionMode)); } if (this.SelectionMode != value) { if (!this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing] && (value == DataGridViewSelectionMode.FullColumnSelect || value == DataGridViewSelectionMode.ColumnHeaderSelect)) { foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.SortMode == DataGridViewColumnSortMode.Automatic) { throw new InvalidOperationException(SR.GetString(SR.DataGridView_SelectionModeAndSortModeClash, (value).ToString())); } } } ClearSelection(); this.selectionMode = value; } } } /// [ DefaultValue(true), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ShowCellErrorsDescr) ] public bool ShowCellErrors { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_showCellErrors]; } set { if (this.ShowCellErrors != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_showCellErrors] = value; // Put this into OnShowCellErrorsChanged if created. if (this.IsHandleCreated && !this.DesignMode) { if (value && !this.ShowRowErrors && !this.ShowCellToolTips) { // the tool tip hasn't yet been activated // activate it now this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption)); } if (!value && !this.ShowRowErrors && !this.ShowCellToolTips) { // there is no reason to keep the tool tip activated // deactivate it this.toolTipCaption = String.Empty; this.toolTipControl.Activate(false /*activate*/); } if (!value && (this.ShowRowErrors || this.ShowCellToolTips)) { // reset the tool tip this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption)); } // Some autosizing may have to be applied since the potential presence of error icons influences the preferred sizes. OnGlobalAutoSize(); } if (!this.layout.dirty && !this.DesignMode) { this.Invalidate(Rectangle.Union(this.layout.Data, this.layout.ColumnHeaders)); this.Invalidate(this.layout.TopLeftHeader); } } } } /// [ DefaultValue(true), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ShowCellToolTipsDescr) ] public bool ShowCellToolTips { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_showCellToolTips]; } set { if (this.ShowCellToolTips != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_showCellToolTips] = value; if (this.IsHandleCreated && !this.DesignMode) { if (value && !this.ShowRowErrors && !this.ShowCellErrors) { // the tool tip hasn't yet been activated // activate it now this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption) /*activate*/); } if (!value && !this.ShowRowErrors && !this.ShowCellErrors) { // there is no reason to keep the tool tip activated // deactivate it this.toolTipCaption = String.Empty; this.toolTipControl.Activate(false /*activate*/); } if (!value && (this.ShowRowErrors || this.ShowCellErrors)) { bool activate = !String.IsNullOrEmpty(this.toolTipCaption); Point mouseCoord = System.Windows.Forms.Control.MousePosition; activate &= this.ClientRectangle.Contains(PointToClient(mouseCoord)); // reset the tool tip this.toolTipControl.Activate(activate); } } if (!this.layout.dirty && !this.DesignMode) { Invalidate(this.layout.Data); } } } } /// [ DefaultValue(true), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ShowEditingIconDescr) ] public bool ShowEditingIcon { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_showEditingIcon]; } set { if (this.ShowEditingIcon != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_showEditingIcon] = value; // invalidate the row header to pick up the new ShowEditingIcon value if (this.RowHeadersVisible) { if (this.VirtualMode || this.DataSource != null) { if (this.IsCurrentRowDirty) { Debug.Assert(this.ptCurrentCell.Y >= 0); InvalidateCellPrivate(-1, this.ptCurrentCell.Y); } } else { if (this.IsCurrentCellDirty) { Debug.Assert(this.ptCurrentCell.Y >= 0); InvalidateCellPrivate(-1, this.ptCurrentCell.Y); } } } } } } /// [ DefaultValue(true), SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_ShowRowErrorsDescr) ] public bool ShowRowErrors { get { return this.dataGridViewState2[DATAGRIDVIEWSTATE2_showRowErrors]; } set { if (this.ShowRowErrors != value) { this.dataGridViewState2[DATAGRIDVIEWSTATE2_showRowErrors] = value; if (this.IsHandleCreated && !this.DesignMode) { if (value && !this.ShowCellErrors && !this.ShowCellToolTips) { // the tool tip hasn't yet been activated // activate it now this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption)); } if (!value && !this.ShowCellErrors && !this.ShowCellToolTips) { // there is no reason to keep the tool tip activated // deactivate it this.toolTipCaption = String.Empty; this.toolTipControl.Activate(false /*activate*/); } if (!value && (this.ShowCellErrors || this.ShowCellToolTips)) { // reset the tool tip this.toolTipControl.Activate(!String.IsNullOrEmpty(this.toolTipCaption)); } } if (!this.layout.dirty && !this.DesignMode) { Invalidate(this.layout.RowHeaders); } } } } internal bool SingleHorizontalBorderAdded { get { return !this.layout.ColumnHeadersVisible && (this.AdvancedCellBorderStyle.All == DataGridViewAdvancedCellBorderStyle.Single || this.CellBorderStyle == DataGridViewCellBorderStyle.SingleHorizontal); } } internal bool SingleVerticalBorderAdded { get { return !this.layout.RowHeadersVisible && (this.AdvancedCellBorderStyle.All == DataGridViewAdvancedCellBorderStyle.Single || this.CellBorderStyle == DataGridViewCellBorderStyle.SingleVertical); } } /// [ Browsable(false) ] public DataGridViewColumn SortedColumn { get { return this.sortedColumn; } } /// [ Browsable(false) ] public SortOrder SortOrder { get { return this.sortOrder; } } /// /// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_StandardTabDescr) ] public bool StandardTab { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_standardTab]; } set { if (this.dataGridViewState1[DATAGRIDVIEWSTATE1_standardTab] != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_standardTab] = value; //OnStandardTabChanged(EventArgs.Empty); } } } ////// ///[ Browsable(false), EditorBrowsable(EditorBrowsableState.Never), Bindable(false) ] public override string Text { get { return base.Text; } set { base.Text = value; } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler TextChanged { add { base.TextChanged += value; } remove { base.TextChanged -= value; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), SuppressMessage("Microsoft.Design", "CA1023:IndexersShouldNotBeMultidimensional") ] public DataGridViewCell this[int columnIndex, int rowIndex] { get { DataGridViewRow row = this.Rows[rowIndex]; return row.Cells[columnIndex]; } set { DataGridViewRow row = this.Rows[rowIndex]; row.Cells[columnIndex] = value; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), SuppressMessage("Microsoft.Design", "CA1023:IndexersShouldNotBeMultidimensional") ] public DataGridViewCell this[string columnName, int rowIndex] { get { DataGridViewRow row = this.Rows[rowIndex]; return row.Cells[columnName]; } set { DataGridViewRow row = this.Rows[rowIndex]; row.Cells[columnName] = value; } } private string ToolTipPrivate { get { return this.toolTipCaption; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public DataGridViewHeaderCell TopLeftHeaderCell { get { if (this.topLeftHeaderCell == null) { this.TopLeftHeaderCell = new DataGridViewTopLeftHeaderCell(); } return this.topLeftHeaderCell; } set { if (this.topLeftHeaderCell != value) { if (this.topLeftHeaderCell != null) { // Detach existing header cell this.topLeftHeaderCell.DataGridViewInternal = null; } this.topLeftHeaderCell = value; if (value != null) { this.topLeftHeaderCell.DataGridViewInternal = this; } if (this.ColumnHeadersVisible && this.RowHeadersVisible) { // If headers (rows or columns) are autosized, then this.RowHeadersWidth or this.ColumnHeadersHeight // must be updated based on new cell preferred size OnColumnHeadersGlobalAutoSize(); // In all cases, the top left cell needs to repaint Invalidate(new Rectangle(this.layout.Inside.X, this.layout.Inside.Y, this.RowHeadersWidth, this.ColumnHeadersHeight)); } } } } /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Advanced) ] public Cursor UserSetCursor { get { if (this.dataGridViewState1[DATAGRIDVIEWSTATE1_customCursorSet]) { return this.oldCursor; } else { return this.Cursor; } } } internal int VerticalOffset { get { return this.verticalOffset; } set { if (value < 0) { value = 0; } int totalVisibleFrozenHeight = this.Rows.GetRowsHeight(DataGridViewElementStates.Visible | DataGridViewElementStates.Frozen); int fittingTrailingScrollingRowsHeight = ComputeHeightOfFittingTrailingScrollingRows(totalVisibleFrozenHeight); if (value > this.vertScrollBar.Maximum - fittingTrailingScrollingRowsHeight) { value = this.vertScrollBar.Maximum - fittingTrailingScrollingRowsHeight; } if (value == this.verticalOffset) { return; } int change = value - this.verticalOffset; if (this.vertScrollBar.Enabled) { this.vertScrollBar.Value = value; } ScrollRowsByHeight(change); // calculate how many rows need to be scrolled based on 'change' } } /// protected ScrollBar VerticalScrollBar { get { return this.vertScrollBar; } } /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) ] public int VerticalScrollingOffset { get { return this.verticalOffset; } } private System.Windows.Forms.Timer VertScrollTimer { get { if (this.vertScrollTimer == null) { this.vertScrollTimer = new System.Windows.Forms.Timer(); this.vertScrollTimer.Tick += new System.EventHandler(VertScrollTimer_Tick); } return this.vertScrollTimer; } } /// /// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridViewVirtualModeDescr) ] public bool VirtualMode { get { return this.dataGridViewState1[DATAGRIDVIEWSTATE1_virtualMode]; } set { if (this.dataGridViewState1[DATAGRIDVIEWSTATE1_virtualMode] != value) { this.dataGridViewState1[DATAGRIDVIEWSTATE1_virtualMode] = value; InvalidateRowHeights(); //OnVirtualModeChanged(EventArgs.Empty); } } } private bool VisibleCellExists { get { if (null == this.Columns.GetFirstColumn(DataGridViewElementStates.Visible)) { return false; } return -1 != this.Rows.GetFirstRow(DataGridViewElementStates.Visible); } } // Events start here ////// ///[ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridViewAutoSizeColumnModeChangedDescr) ] public event DataGridViewAutoSizeColumnModeEventHandler AutoSizeColumnModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWAUTOSIZECOLUMNMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWAUTOSIZECOLUMNMODECHANGED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_CancelRowEditDescr) ] public event QuestionEventHandler CancelRowEdit { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCANCELROWEDIT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCANCELROWEDIT, value); } } /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_CellBeginEditDescr) ] public event DataGridViewCellCancelEventHandler CellBeginEdit { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLBEGINEDIT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLBEGINEDIT, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellClickDescr) ] public event DataGridViewCellEventHandler CellClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellContentClick) ] public event DataGridViewCellEventHandler CellContentClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCONTENTCLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCONTENTCLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellContentDoubleClick) ] public event DataGridViewCellEventHandler CellContentDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCONTENTDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCONTENTDOUBLECLICK, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_CellContextMenuStripChanged), EditorBrowsable(EditorBrowsableState.Advanced) ] public event DataGridViewCellEventHandler CellContextMenuStripChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPCHANGED, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_CellContextMenuStripNeeded), EditorBrowsable(EditorBrowsableState.Advanced) ] public event DataGridViewCellContextMenuStripNeededEventHandler CellContextMenuStripNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLCONTEXTMENUSTRIPNEEDED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellDoubleClickDescr) ] public event DataGridViewCellEventHandler CellDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLDOUBLECLICK, value); } } /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_CellEndEditDescr) ] public event DataGridViewCellEventHandler CellEndEdit { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLENDEDIT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLENDEDIT, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_CellEnterDescr) ] public event DataGridViewCellEventHandler CellEnter { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLENTER, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLENTER, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellErrorTextChangedDescr) ] public event DataGridViewCellEventHandler CellErrorTextChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLERRORTEXTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLERRORTEXTCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_CellErrorTextNeededDescr) ] public event DataGridViewCellErrorTextNeededEventHandler CellErrorTextNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLERRORTEXTNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLERRORTEXTNEEDED, value); } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_CellFormattingDescr) ] public event DataGridViewCellFormattingEventHandler CellFormatting { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLFORMATTING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLFORMATTING, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_CellLeaveDescr) ] public event DataGridViewCellEventHandler CellLeave { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLLEAVE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLLEAVE, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseClickDescr) ] public event DataGridViewCellMouseEventHandler CellMouseClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSECLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseDoubleClickDescr) ] public event DataGridViewCellMouseEventHandler CellMouseDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEDOUBLECLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseDownDescr) ] public event DataGridViewCellMouseEventHandler CellMouseDown { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEDOWN, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEDOWN, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseEnterDescr) ] public event DataGridViewCellEventHandler CellMouseEnter { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEENTER, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEENTER, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseLeaveDescr) ] public event DataGridViewCellEventHandler CellMouseLeave { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSELEAVE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSELEAVE, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseMoveDescr) ] public event DataGridViewCellMouseEventHandler CellMouseMove { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEMOVE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEMOVE, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_CellMouseUpDescr) ] public event DataGridViewCellMouseEventHandler CellMouseUp { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLMOUSEUP, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLMOUSEUP, value); } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_CellPaintingDescr) ] public event DataGridViewCellPaintingEventHandler CellPainting { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLPAINTING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLPAINTING, value); } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_CellParsingDescr) ] public event DataGridViewCellParsingEventHandler CellParsing { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLPARSING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLPARSING, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_CellStateChangedDescr) ] public event DataGridViewCellStateChangedEventHandler CellStateChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLSTATECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLSTATECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellStyleChangedDescr) ] public event DataGridViewCellEventHandler CellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellStyleContentChangedDescr) ] public event DataGridViewCellStyleContentChangedEventHandler CellStyleContentChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLSTYLECONTENTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLSTYLECONTENTCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_CellToolTipTextChangedDescr) ] public event DataGridViewCellEventHandler CellToolTipTextChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTCHANGED, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_CellToolTipTextNeededDescr), EditorBrowsable(EditorBrowsableState.Advanced) ] public event DataGridViewCellToolTipTextNeededEventHandler CellToolTipTextNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLTOOLTIPTEXTNEEDED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_CellValidatedDescr) ] public event DataGridViewCellEventHandler CellValidated { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALIDATED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALIDATED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_CellValidatingDescr) ] public event DataGridViewCellValidatingEventHandler CellValidating { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALIDATING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALIDATING, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_CellValueChangedDescr) ] public event DataGridViewCellEventHandler CellValueChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALUECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALUECHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_CellValueNeededDescr) ] public event DataGridViewCellValueEventHandler CellValueNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALUENEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALUENEEDED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_CellValuePushedDescr) ] public event DataGridViewCellValueEventHandler CellValuePushed { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCELLVALUEPUSHED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCELLVALUEPUSHED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_ColumnAddedDescr) ] public event DataGridViewColumnEventHandler ColumnAdded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNADDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNADDED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnContextMenuStripChangedDescr) ] public event DataGridViewColumnEventHandler ColumnContextMenuStripChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNCONTEXTMENUSTRIPCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNCONTEXTMENUSTRIPCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnDataPropertyNameChangedDescr) ] public event DataGridViewColumnEventHandler ColumnDataPropertyNameChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDATAPROPERTYNAMECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDATAPROPERTYNAMECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnDefaultCellStyleChangedDescr) ] public event DataGridViewColumnEventHandler ColumnDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDEFAULTCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnDisplayIndexChangedDescr) ] public event DataGridViewColumnEventHandler ColumnDisplayIndexChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDISPLAYINDEXCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDISPLAYINDEXCHANGED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_ColumnDividerDoubleClickDescr) ] public event DataGridViewColumnDividerDoubleClickEventHandler ColumnDividerDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDIVIDERDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDIVIDERDOUBLECLICK, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnDividerWidthChangedDescr) ] public event DataGridViewColumnEventHandler ColumnDividerWidthChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNDIVIDERWIDTHCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNDIVIDERWIDTHCHANGED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_ColumnHeaderMouseClickDescr) ] public event DataGridViewCellMouseEventHandler ColumnHeaderMouseClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSECLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_ColumnHeaderMouseDoubleClickDescr) ] public event DataGridViewCellMouseEventHandler ColumnHeaderMouseDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSEDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERMOUSEDOUBLECLICK, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnHeaderCellChangedDescr) ] public event DataGridViewColumnEventHandler ColumnHeaderCellChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERCELLCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNHEADERCELLCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnMinimumWidthChangedDescr) ] public event DataGridViewColumnEventHandler ColumnMinimumWidthChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNMINIMUMWIDTHCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNMINIMUMWIDTHCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnNameChangedDescr) ] public event DataGridViewColumnEventHandler ColumnNameChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNNAMECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNNAMECHANGED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_ColumnRemovedDescr) ] public event DataGridViewColumnEventHandler ColumnRemoved { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNREMOVED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNREMOVED, value); } } /*/// /// public event EventHandler ColumnsDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNSDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNSDEFAULTCELLSTYLECHANGED, value); } }*/ /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridViewColumnSortModeChangedDescr) ] public event DataGridViewColumnEventHandler ColumnSortModeChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNSORTMODECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNSORTMODECHANGED, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_ColumnStateChangedDescr) ] public event DataGridViewColumnStateChangedEventHandler ColumnStateChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNSTATECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNSTATECHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_ColumnToolTipTextChangedDescr) ] public event DataGridViewColumnEventHandler ColumnToolTipTextChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNTOOLTIPTEXTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNTOOLTIPTEXTCHANGED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_ColumnWidthChangedDescr) ] public event DataGridViewColumnEventHandler ColumnWidthChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCOLUMNWIDTHCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCOLUMNWIDTHCHANGED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_CurrentCellChangedDescr) ] public event EventHandler CurrentCellChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCURRENTCELLCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCURRENTCELLCHANGED, value); } } /// [ SRCategory(SR.CatBehavior), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_CurrentCellDirtyStateChangedDescr) ] public event EventHandler CurrentCellDirtyStateChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWCURRENTCELLDIRTYSTATECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWCURRENTCELLDIRTYSTATECHANGED, value); } } /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_DataBindingCompleteDescr) ] public event DataGridViewBindingCompleteEventHandler DataBindingComplete { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDATABINDINGCOMPLETE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDATABINDINGCOMPLETE, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_DataErrorDescr) ] public event DataGridViewDataErrorEventHandler DataError { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDATAERROR, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDATAERROR, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_DefaultValuesNeededDescr) ] public event DataGridViewRowEventHandler DefaultValuesNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWDEFAULTVALUESNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWDEFAULTVALUESNEEDED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_EditingControlShowingDescr) ] public event DataGridViewEditingControlShowingEventHandler EditingControlShowing { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWEDITINGCONTROLSHOWING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWEDITINGCONTROLSHOWING, value); } } /* /// public event QuestionEventHandler KeepNewRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWKEEPNEWROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWKEEPNEWROW, value); } }*/ /*/// /// public event EventHandler NewRowDiscarded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWNEWROWDISCARDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWNEWROWDISCARDED, value); } }*/ /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_NewRowNeededDescr) ] public event DataGridViewRowEventHandler NewRowNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWNEWROWNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWNEWROWNEEDED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowContextMenuStripChangedDescr) ] public event DataGridViewRowEventHandler RowContextMenuStripChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowContextMenuStripNeededDescr) ] public event DataGridViewRowContextMenuStripNeededEventHandler RowContextMenuStripNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWCONTEXTMENUSTRIPNEEDED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowDefaultCellStyleChangedDescr) ] public event DataGridViewRowEventHandler RowDefaultCellStyleChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWDEFAULTCELLSTYLECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWDEFAULTCELLSTYLECHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowDirtyStateNeededDescr) ] public event QuestionEventHandler RowDirtyStateNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWDIRTYSTATENEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWDIRTYSTATENEEDED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_RowDividerDoubleClickDescr) ] public event DataGridViewRowDividerDoubleClickEventHandler RowDividerDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWDIVIDERDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWDIVIDERDOUBLECLICK, value); } } /// [ SRCategory(SR.CatAppearance), SRDescription(SR.DataGridView_RowDividerHeightChangedDescr) ] public event DataGridViewRowEventHandler RowDividerHeightChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWDIVIDERHEIGHTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWDIVIDERHEIGHTCHANGED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_RowEnterDescr) ] public event DataGridViewCellEventHandler RowEnter { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWENTER, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWENTER, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowErrorTextChangedDescr) ] public event DataGridViewRowEventHandler RowErrorTextChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWERRORTEXTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWERRORTEXTCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowErrorTextNeededDescr) ] public event DataGridViewRowErrorTextNeededEventHandler RowErrorTextNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWERRORTEXTNEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWERRORTEXTNEEDED, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_RowHeaderMouseClickDescr) ] public event DataGridViewCellMouseEventHandler RowHeaderMouseClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERMOUSECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERMOUSECLICK, value); } } /// [ SRCategory(SR.CatMouse), SRDescription(SR.DataGridView_RowHeaderMouseDoubleClickDescr) ] public event DataGridViewCellMouseEventHandler RowHeaderMouseDoubleClick { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERMOUSEDOUBLECLICK, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERMOUSEDOUBLECLICK, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowHeaderCellChangedDescr) ] public event DataGridViewRowEventHandler RowHeaderCellChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEADERCELLCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEADERCELLCHANGED, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowHeightChangedDescr) ] public event DataGridViewRowEventHandler RowHeightChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEIGHTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEIGHTCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowHeightInfoNeededDescr) ] public event DataGridViewRowHeightInfoNeededEventHandler RowHeightInfoNeeded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEIGHTINFONEEDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEIGHTINFONEEDED, value); } } internal DataGridViewRowHeightInfoNeededEventArgs RowHeightInfoNeededEventArgs { get { if (this.dgvrhine == null) { this.dgvrhine = new DataGridViewRowHeightInfoNeededEventArgs(); } return this.dgvrhine; } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowHeightInfoPushedDescr) ] public event DataGridViewRowHeightInfoPushedEventHandler RowHeightInfoPushed { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWHEIGHTINFOPUSHED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWHEIGHTINFOPUSHED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_RowLeaveDescr) ] public event DataGridViewCellEventHandler RowLeave { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWLEAVE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWLEAVE, value); } } /// [ SRCategory(SR.CatPropertyChanged), SRDescription(SR.DataGridView_RowMinimumHeightChangedDescr) ] public event DataGridViewRowEventHandler RowMinimumHeightChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWMINIMUMHEIGHTCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWMINIMUMHEIGHTCHANGED, value); } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_RowPostPaintDescr) ] public event DataGridViewRowPostPaintEventHandler RowPostPaint { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWPOSTPAINT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWPOSTPAINT, value); } } internal DataGridViewRowPostPaintEventArgs RowPostPaintEventArgs { get { if (this.dgvrpope == null) { this.dgvrpope = new DataGridViewRowPostPaintEventArgs(this); } return this.dgvrpope; } } /// [ SRCategory(SR.CatDisplay), SRDescription(SR.DataGridView_RowPrePaintDescr) ] public event DataGridViewRowPrePaintEventHandler RowPrePaint { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWPREPAINT, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWPREPAINT, value); } } internal DataGridViewRowPrePaintEventArgs RowPrePaintEventArgs { get { if (this.dgvrprpe == null) { this.dgvrprpe = new DataGridViewRowPrePaintEventArgs(this); } return this.dgvrprpe; } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_RowsAddedDescr) ] public event DataGridViewRowsAddedEventHandler RowsAdded { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWSADDED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWSADDED, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_RowsRemovedDescr) ] public event DataGridViewRowsRemovedEventHandler RowsRemoved { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWSREMOVED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWSREMOVED, value); } } /// [ SRCategory(SR.CatBehavior), SRDescription(SR.DataGridView_RowStateChangedDescr) ] public event DataGridViewRowStateChangedEventHandler RowStateChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWSTATECHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWSTATECHANGED, value); } } /// [ SRCategory(SR.CatBehavior), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_RowUnsharedDescr) ] public event DataGridViewRowEventHandler RowUnshared { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWUNSHARED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWUNSHARED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_RowValidatedDescr) ] public event DataGridViewCellEventHandler RowValidated { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWVALIDATED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWVALIDATED, value); } } /// [ SRCategory(SR.CatFocus), SRDescription(SR.DataGridView_RowValidatingDescr) ] public event DataGridViewCellCancelEventHandler RowValidating { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWROWVALIDATING, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWROWVALIDATING, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_ScrollDescr) ] public event ScrollEventHandler Scroll { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWSCROLL, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWSCROLL, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_SelectionChangedDescr) ] public event EventHandler SelectionChanged { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWSELECTIONCHANGED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWSELECTIONCHANGED, value); } } /// [ SRCategory(SR.CatData), EditorBrowsable(EditorBrowsableState.Advanced), SRDescription(SR.DataGridView_SortCompareDescr) ] public event DataGridViewSortCompareEventHandler SortCompare { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWSORTCOMPARE, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWSORTCOMPARE, value); } } /// [ SRCategory(SR.CatData), SRDescription(SR.DataGridView_SortedDescr) ] public event EventHandler Sorted { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWSORTED, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWSORTED, value); } } /// /// [ Browsable(false), EditorBrowsable(EditorBrowsableState.Never) ] new public event EventHandler StyleChanged { add { base.StyleChanged += value; } remove { base.StyleChanged -= value; } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_UserAddedRowDescr) ] public event DataGridViewRowEventHandler UserAddedRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWUSERADDEDROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWUSERADDEDROW, value); } } /*/// /// public event DataGridViewRowCancelEventHandler UserAddingRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWUSERADDINGROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWUSERADDINGROW, value); } }*/ /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_UserDeletedRowDescr) ] public event DataGridViewRowEventHandler UserDeletedRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWUSERDELETEDROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWUSERDELETEDROW, value); } } /// [ SRCategory(SR.CatAction), SRDescription(SR.DataGridView_UserDeletingRowDescr) ] public event DataGridViewRowCancelEventHandler UserDeletingRow { add { this.Events.AddHandler(EVENT_DATAGRIDVIEWUSERDELETINGROW, value); } remove { this.Events.RemoveHandler(EVENT_DATAGRIDVIEWUSERDELETINGROW, value); } } //////////////////////// // // // ISupportInitialize // // // //////////////////////// [ SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes") // VSWhidbey 405004 ] void ISupportInitialize.BeginInit() { if (this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing]) { throw new InvalidOperationException(SR.GetString(SR.DataGridViewBeginInit)); } this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing] = true; } [ SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes") // VSWhidbey 405004 ] void ISupportInitialize.EndInit() { this.dataGridViewState2[DATAGRIDVIEWSTATE2_initializing] = false; foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.Frozen && dataGridViewColumn.Visible && dataGridViewColumn.InheritedAutoSizeMode == DataGridViewAutoSizeColumnMode.Fill) { dataGridViewColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; } } DataGridViewSelectionMode selectionMode = this.SelectionMode; if (selectionMode == DataGridViewSelectionMode.FullColumnSelect || selectionMode == DataGridViewSelectionMode.ColumnHeaderSelect) { foreach (DataGridViewColumn dataGridViewColumn in this.Columns) { if (dataGridViewColumn.SortMode == DataGridViewColumnSortMode.Automatic) { // Resetting SelectionMode to its acceptable default value. We don't want the control to ever end up in an invalid state. this.SelectionMode = defaultSelectionMode; // DataGridViewSelectionMode.RowHeaderSelect throw new InvalidOperationException(SR.GetString(SR.DataGridView_SelectionModeReset, SR.GetString(SR.DataGridView_SelectionModeAndSortModeClash, (selectionMode).ToString()), (defaultSelectionMode).ToString())); } } } } /* INTERNAL ENUMERATIONS */ internal enum DataGridViewHitTestTypeInternal { None, Cell, ColumnHeader, RowHeader, ColumnResizeLeft, ColumnResizeRight, RowResizeTop, RowResizeBottom, FirstColumnHeaderLeft, TopLeftHeader, TopLeftHeaderResizeLeft, TopLeftHeaderResizeRight, TopLeftHeaderResizeTop, TopLeftHeaderResizeBottom, ColumnHeadersResizeBottom, ColumnHeadersResizeTop, RowHeadersResizeRight, RowHeadersResizeLeft, ColumnHeaderLeft, ColumnHeaderRight } internal enum DataGridViewValidateCellInternal { Never, Always, WhenChanged } private enum DataGridViewMouseEvent { Click, DoubleClick, MouseClick, MouseDoubleClick, MouseDown, MouseUp, MouseMove } private struct MouseClickInfo { public MouseButtons button; public long timeStamp; public int x; public int y; public int col; public int row; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScriptServiceAttribute.cs
- EmptyQuery.cs
- IndicShape.cs
- XpsFontSubsetter.cs
- EntityDataSourceDataSelection.cs
- TaiwanCalendar.cs
- EpmTargetTree.cs
- Binding.cs
- SqlDataSourceCommandEventArgs.cs
- MouseDevice.cs
- CompiledQueryCacheEntry.cs
- ConstraintConverter.cs
- LinkClickEvent.cs
- CellParagraph.cs
- GlyphRun.cs
- RegularExpressionValidator.cs
- DataGridViewDataErrorEventArgs.cs
- RandomNumberGenerator.cs
- MediaElement.cs
- CollectionType.cs
- ToolStripItemRenderEventArgs.cs
- VersionedStream.cs
- DesignerTransactionCloseEvent.cs
- ClientApiGenerator.cs
- AnnotationHighlightLayer.cs
- SchemaMapping.cs
- PerformanceCounterPermissionEntryCollection.cs
- FontUnit.cs
- Model3DCollection.cs
- PeerNearMe.cs
- RuntimeConfigurationRecord.cs
- Line.cs
- BamlTreeNode.cs
- HttpServerVarsCollection.cs
- SemaphoreFullException.cs
- RNGCryptoServiceProvider.cs
- RequiredAttributeAttribute.cs
- Utility.cs
- RenderCapability.cs
- ParameterExpression.cs
- ApplicationSecurityInfo.cs
- SAPICategories.cs
- NeutralResourcesLanguageAttribute.cs
- PolyLineSegment.cs
- OpCodes.cs
- AdornerPresentationContext.cs
- InvalidCommandTreeException.cs
- ReflectionServiceProvider.cs
- GACIdentityPermission.cs
- BamlResourceDeserializer.cs
- HashSetEqualityComparer.cs
- DataGridItemCollection.cs
- InheritanceContextHelper.cs
- LinkedDataMemberFieldEditor.cs
- CodeIdentifier.cs
- PrintPreviewDialog.cs
- Selection.cs
- TextEditorSelection.cs
- RoleManagerEventArgs.cs
- ConfigUtil.cs
- NotFiniteNumberException.cs
- RotateTransform.cs
- MultiTrigger.cs
- ValidationEventArgs.cs
- KnownTypesProvider.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- SchemaTypeEmitter.cs
- IdentityHolder.cs
- Int16Converter.cs
- ProxyGenerationError.cs
- AspNetHostingPermission.cs
- HttpListenerRequest.cs
- CasesDictionary.cs
- HttpListenerPrefixCollection.cs
- HtmlControlDesigner.cs
- PixelFormat.cs
- ConstNode.cs
- DataColumnSelectionConverter.cs
- TextModifier.cs
- ComponentManagerBroker.cs
- WindowsFormsHelpers.cs
- Int32CollectionValueSerializer.cs
- XmlDictionary.cs
- RectangleHotSpot.cs
- CardSpaceSelector.cs
- ToolStripComboBox.cs
- NamedPipeProcessProtocolHandler.cs
- Win32.cs
- SubstitutionList.cs
- SmtpNegotiateAuthenticationModule.cs
- MDIWindowDialog.cs
- MsmqVerifier.cs
- VectorCollectionConverter.cs
- NonNullItemCollection.cs
- ReplacementText.cs
- DataGridColumnEventArgs.cs
- XmlElement.cs
- FunctionNode.cs
- ModelItemImpl.cs
- DataGridViewCellStyleBuilderDialog.cs