PageRenderTime 53ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 1ms

/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridView.cs

https://bitbucket.org/danipen/mono
C# | 6814 lines | 5459 code | 1143 blank | 212 comment | 1513 complexity | 87251461e09094f579a0da9c80b4575a MD5 | raw file
Possible License(s): Unlicense, Apache-2.0, LGPL-2.0, MPL-2.0-no-copyleft-exception, CC-BY-SA-3.0, GPL-2.0

Large files files are truncated, but you can click here to view the full file

  1. // Permission is hereby granted, free of charge, to any person obtaining
  2. // a copy of this software and associated documentation files (the
  3. // "Software"), to deal in the Software without restriction, including
  4. // without limitation the rights to use, copy, modify, merge, publish,
  5. // distribute, sublicense, and/or sell copies of the Software, and to
  6. // permit persons to whom the Software is furnished to do so, subject to
  7. // the following conditions:
  8. //
  9. // The above copyright notice and this permission notice shall be
  10. // included in all copies or substantial portions of the Software.
  11. //
  12. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  13. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  14. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  15. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  16. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  17. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  18. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  19. //
  20. // Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
  21. //
  22. // Author:
  23. // Pedro Martínez Juliá <pedromj@gmail.com>
  24. // Ivan N. Zlatev <contact@i-nz.net>
  25. //
  26. using System;
  27. using System.ComponentModel;
  28. using System.Runtime.InteropServices;
  29. using System.Drawing;
  30. using System.Reflection;
  31. using System.Collections;
  32. using System.Text;
  33. using System.Collections.Generic;
  34. namespace System.Windows.Forms {
  35. [ComVisibleAttribute(true)]
  36. [ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
  37. [Designer("System.Windows.Forms.Design.DataGridViewDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
  38. [Editor("System.Windows.Forms.Design.DataGridViewComponentEditor, " + Consts.AssemblySystem_Design, typeof (System.ComponentModel.ComponentEditor))]
  39. [ComplexBindingProperties ("DataSource", "DataMember")]
  40. [DefaultEvent ("CellContentClick")]
  41. [Docking (DockingBehavior.Ask)]
  42. public class DataGridView : Control, ISupportInitialize, IBindableComponent, IDropTarget
  43. {
  44. private DataGridViewAdvancedBorderStyle adjustedTopLeftHeaderBorderStyle;
  45. private DataGridViewAdvancedBorderStyle advancedCellBorderStyle;
  46. private DataGridViewAdvancedBorderStyle advancedColumnHeadersBorderStyle;
  47. private DataGridViewAdvancedBorderStyle advancedRowHeadersBorderStyle;
  48. private bool allowUserToAddRows;
  49. private bool allowUserToDeleteRows;
  50. private bool allowUserToOrderColumns;
  51. private bool allowUserToResizeColumns;
  52. private bool allowUserToResizeRows;
  53. private DataGridViewCellStyle alternatingRowsDefaultCellStyle;
  54. private Point anchor_cell;
  55. private bool autoGenerateColumns;
  56. private bool autoSize;
  57. private DataGridViewAutoSizeColumnsMode autoSizeColumnsMode;
  58. private DataGridViewAutoSizeRowsMode autoSizeRowsMode;
  59. private Color backColor;
  60. private Color backgroundColor;
  61. private Image backgroundImage;
  62. private BorderStyle borderStyle;
  63. private DataGridViewCellBorderStyle cellBorderStyle;
  64. private DataGridViewClipboardCopyMode clipboardCopyMode;
  65. private DataGridViewHeaderBorderStyle columnHeadersBorderStyle;
  66. private DataGridViewCellStyle columnHeadersDefaultCellStyle;
  67. private int columnHeadersHeight;
  68. private DataGridViewColumnHeadersHeightSizeMode columnHeadersHeightSizeMode;
  69. private bool columnHeadersVisible;
  70. private DataGridViewColumnCollection columns;
  71. private DataGridViewCell currentCell;
  72. private Point currentCellAddress;
  73. //private DataGridViewRow currentRow;
  74. private string dataMember;
  75. private object dataSource;
  76. private DataGridViewCellStyle defaultCellStyle;
  77. //private Control editingControl;
  78. private DataGridViewEditMode editMode;
  79. private bool enableHeadersVisualStyles = true;
  80. private DataGridViewCell firstDisplayedCell;
  81. private int firstDisplayedScrollingColumnHiddenWidth;
  82. private int firstDisplayedScrollingColumnIndex;
  83. private int firstDisplayedScrollingRowIndex;
  84. private Color gridColor = Color.FromKnownColor(KnownColor.ControlDark);
  85. private int horizontalScrollingOffset;
  86. private DataGridViewCell hover_cell = null;
  87. private bool isCurrentCellDirty;
  88. //private bool isCurrentRowDirty;
  89. private bool multiSelect;
  90. private bool readOnly;
  91. private DataGridViewHeaderBorderStyle rowHeadersBorderStyle;
  92. private DataGridViewCellStyle rowHeadersDefaultCellStyle;
  93. private bool rowHeadersVisible;
  94. private int rowHeadersWidth;
  95. private DataGridViewRowHeadersWidthSizeMode rowHeadersWidthSizeMode;
  96. private DataGridViewRowCollection rows;
  97. private DataGridViewCellStyle rowsDefaultCellStyle;
  98. private DataGridViewRow rowTemplate;
  99. private ScrollBars scrollBars;
  100. private DataGridViewSelectionMode selectionMode;
  101. private bool showCellErrors;
  102. private bool showCellToolTips;
  103. private bool showEditingIcon;
  104. private bool showRowErrors;
  105. private DataGridViewColumn sortedColumn = null;
  106. private SortOrder sortOrder;
  107. private bool standardTab;
  108. private DataGridViewHeaderCell topLeftHeaderCell;
  109. private Cursor userSetCursor;
  110. private int verticalScrollingOffset;
  111. private bool virtualMode;
  112. private HScrollBar horizontalScrollBar;
  113. private VScrollBar verticalScrollBar;
  114. private Control editingControl;
  115. private bool is_autogenerating_columns = false;
  116. private bool is_binding = false;
  117. private bool new_row_editing = false;
  118. // These are used to implement selection behaviour with SHIFT pressed.
  119. private int selected_row = -1;
  120. private int selected_column = -1;
  121. // Stuff for error Tooltips
  122. private Timer tooltip_timer;
  123. private ToolTip tooltip_window;
  124. private DataGridViewCell tooltip_currently_showing;
  125. private DataGridViewSelectedRowCollection selected_rows;
  126. private DataGridViewSelectedColumnCollection selected_columns;
  127. private DataGridViewRow editing_row;
  128. DataGridViewHeaderCell pressed_header_cell;
  129. DataGridViewHeaderCell entered_header_cell;
  130. // For column/row resizing via mouse
  131. private bool column_resize_active = false;
  132. private bool row_resize_active = false;
  133. private int resize_band = -1;
  134. private int resize_band_start = 0;
  135. private int resize_band_delta = 0;
  136. public DataGridView ()
  137. {
  138. SetStyle (ControlStyles.Opaque, true);
  139. //SetStyle (ControlStyles.UserMouse, true);
  140. SetStyle (ControlStyles.OptimizedDoubleBuffer, true);
  141. adjustedTopLeftHeaderBorderStyle = new DataGridViewAdvancedBorderStyle();
  142. adjustedTopLeftHeaderBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
  143. advancedCellBorderStyle = new DataGridViewAdvancedBorderStyle();
  144. advancedCellBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
  145. advancedColumnHeadersBorderStyle = new DataGridViewAdvancedBorderStyle();
  146. advancedColumnHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
  147. advancedRowHeadersBorderStyle = new DataGridViewAdvancedBorderStyle();
  148. advancedRowHeadersBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
  149. alternatingRowsDefaultCellStyle = new DataGridViewCellStyle();
  150. allowUserToAddRows = true;
  151. allowUserToDeleteRows = true;
  152. allowUserToOrderColumns = false;
  153. allowUserToResizeColumns = true;
  154. allowUserToResizeRows = true;
  155. autoGenerateColumns = true;
  156. autoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
  157. autoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
  158. backColor = Control.DefaultBackColor;
  159. backgroundColor = SystemColors.AppWorkspace;
  160. borderStyle = BorderStyle.FixedSingle;
  161. cellBorderStyle = DataGridViewCellBorderStyle.Single;
  162. clipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithAutoHeaderText;
  163. columnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
  164. columnHeadersDefaultCellStyle = new DataGridViewCellStyle();
  165. columnHeadersDefaultCellStyle.BackColor = SystemColors.Control;
  166. columnHeadersDefaultCellStyle.ForeColor = SystemColors.WindowText;
  167. columnHeadersDefaultCellStyle.SelectionBackColor = SystemColors.Highlight;
  168. columnHeadersDefaultCellStyle.SelectionForeColor = SystemColors.HighlightText;
  169. columnHeadersDefaultCellStyle.Font = this.Font;
  170. columnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
  171. columnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.True;
  172. columnHeadersHeight = 23;
  173. columnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
  174. columnHeadersVisible = true;
  175. columns = CreateColumnsInstance();
  176. columns.CollectionChanged += OnColumnCollectionChanged;
  177. currentCellAddress = new Point (-1, -1);
  178. dataMember = String.Empty;
  179. defaultCellStyle = new DataGridViewCellStyle();
  180. defaultCellStyle.BackColor = SystemColors.Window;
  181. defaultCellStyle.ForeColor = SystemColors.ControlText;
  182. defaultCellStyle.SelectionBackColor = SystemColors.Highlight;
  183. defaultCellStyle.SelectionForeColor = SystemColors.HighlightText;
  184. defaultCellStyle.Font = this.Font;
  185. defaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
  186. defaultCellStyle.WrapMode = DataGridViewTriState.False;
  187. editMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
  188. firstDisplayedScrollingColumnHiddenWidth = 0;
  189. isCurrentCellDirty = false;
  190. multiSelect = true;
  191. readOnly = false;
  192. rowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
  193. rowHeadersDefaultCellStyle = (DataGridViewCellStyle) columnHeadersDefaultCellStyle.Clone ();
  194. rowHeadersVisible = true;
  195. rowHeadersWidth = 41;
  196. rowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;
  197. rows = CreateRowsInstance();
  198. rowsDefaultCellStyle = new DataGridViewCellStyle();
  199. selectionMode = DataGridViewSelectionMode.RowHeaderSelect;
  200. showCellErrors = true;
  201. showEditingIcon = true;
  202. scrollBars = ScrollBars.Both;
  203. userSetCursor = Cursor.Current;
  204. virtualMode = false;
  205. horizontalScrollBar = new HScrollBar();
  206. horizontalScrollBar.Scroll += OnHScrollBarScroll;
  207. horizontalScrollBar.Visible = false;
  208. verticalScrollBar = new VScrollBar();
  209. verticalScrollBar.Scroll += OnVScrollBarScroll;
  210. verticalScrollBar.Visible = false;
  211. Controls.AddRange (new Control[] {horizontalScrollBar, verticalScrollBar});
  212. }
  213. void ISupportInitialize.BeginInit ()
  214. {
  215. }
  216. void ISupportInitialize.EndInit ()
  217. {
  218. }
  219. // Propiedades
  220. [Browsable (false)]
  221. [EditorBrowsable (EditorBrowsableState.Advanced)]
  222. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  223. public virtual DataGridViewAdvancedBorderStyle AdjustedTopLeftHeaderBorderStyle {
  224. get { return adjustedTopLeftHeaderBorderStyle; }
  225. }
  226. [Browsable (false)]
  227. [EditorBrowsable (EditorBrowsableState.Advanced)]
  228. public DataGridViewAdvancedBorderStyle AdvancedCellBorderStyle {
  229. get { return advancedCellBorderStyle; }
  230. }
  231. [Browsable (false)]
  232. [EditorBrowsable (EditorBrowsableState.Advanced)]
  233. public DataGridViewAdvancedBorderStyle AdvancedColumnHeadersBorderStyle {
  234. get { return advancedColumnHeadersBorderStyle; }
  235. }
  236. [Browsable (false)]
  237. [EditorBrowsable (EditorBrowsableState.Advanced)]
  238. public DataGridViewAdvancedBorderStyle AdvancedRowHeadersBorderStyle {
  239. get { return advancedRowHeadersBorderStyle; }
  240. }
  241. [DefaultValue (true)]
  242. public bool AllowUserToAddRows {
  243. get {
  244. if (allowUserToAddRows && DataManager != null)
  245. return DataManager.AllowNew;
  246. return allowUserToAddRows;
  247. }
  248. set {
  249. if (allowUserToAddRows != value) {
  250. allowUserToAddRows = value;
  251. if (!value) {
  252. if (new_row_editing)
  253. CancelEdit ();
  254. RemoveEditingRow ();
  255. } else {
  256. PrepareEditingRow (false, false);
  257. }
  258. OnAllowUserToAddRowsChanged(EventArgs.Empty);
  259. Invalidate ();
  260. }
  261. }
  262. }
  263. [DefaultValue (true)]
  264. public bool AllowUserToDeleteRows {
  265. get {
  266. if (allowUserToDeleteRows && DataManager != null)
  267. return DataManager.AllowRemove;
  268. return allowUserToDeleteRows;
  269. }
  270. set {
  271. if (allowUserToDeleteRows != value) {
  272. allowUserToDeleteRows = value;
  273. OnAllowUserToDeleteRowsChanged(EventArgs.Empty);
  274. }
  275. }
  276. }
  277. [DefaultValue (false)]
  278. public bool AllowUserToOrderColumns {
  279. get { return allowUserToOrderColumns; }
  280. set {
  281. if (allowUserToOrderColumns != value) {
  282. allowUserToOrderColumns = value;
  283. OnAllowUserToOrderColumnsChanged(EventArgs.Empty);
  284. }
  285. }
  286. }
  287. [DefaultValue (true)]
  288. public bool AllowUserToResizeColumns {
  289. get { return allowUserToResizeColumns; }
  290. set {
  291. if (allowUserToResizeColumns != value) {
  292. allowUserToResizeColumns = value;
  293. OnAllowUserToResizeColumnsChanged(EventArgs.Empty);
  294. }
  295. }
  296. }
  297. [DefaultValue (true)]
  298. public bool AllowUserToResizeRows {
  299. get { return allowUserToResizeRows; }
  300. set {
  301. if (allowUserToResizeRows != value) {
  302. allowUserToResizeRows = value;
  303. OnAllowUserToResizeRowsChanged(EventArgs.Empty);
  304. }
  305. }
  306. }
  307. public DataGridViewCellStyle AlternatingRowsDefaultCellStyle {
  308. get { return alternatingRowsDefaultCellStyle; }
  309. set {
  310. if (alternatingRowsDefaultCellStyle != value) {
  311. alternatingRowsDefaultCellStyle = value;
  312. OnAlternatingRowsDefaultCellStyleChanged(EventArgs.Empty);
  313. Invalidate();
  314. }
  315. }
  316. }
  317. [Browsable (false)]
  318. [EditorBrowsable (EditorBrowsableState.Advanced)]
  319. [DefaultValue (true)]
  320. public bool AutoGenerateColumns {
  321. get { return autoGenerateColumns; }
  322. set {
  323. if (autoGenerateColumns != value) {
  324. autoGenerateColumns = value;
  325. OnAutoGenerateColumnsChanged(EventArgs.Empty);
  326. }
  327. }
  328. }
  329. public override bool AutoSize {
  330. get { return autoSize; }
  331. set {
  332. if (autoSize != value) {
  333. autoSize = value;
  334. //OnAutoSizeChanged(EventArgs.Empty);
  335. }
  336. }
  337. }
  338. [DefaultValue (DataGridViewAutoSizeColumnsMode.None)]
  339. public DataGridViewAutoSizeColumnsMode AutoSizeColumnsMode {
  340. get { return autoSizeColumnsMode; }
  341. set {
  342. if (!Enum.IsDefined(typeof(DataGridViewAutoSizeColumnsMode), value)) {
  343. throw new InvalidEnumArgumentException("Value is not valid DataGridViewAutoSizeColumnsMode.");
  344. }
  345. if (value == DataGridViewAutoSizeColumnsMode.ColumnHeader && columnHeadersVisible == false) {
  346. foreach (DataGridViewColumn col in columns) {
  347. if (col.AutoSizeMode == DataGridViewAutoSizeColumnMode.NotSet) {
  348. throw new InvalidOperationException("Cant set this property to ColumnHeader in this DataGridView.");
  349. }
  350. }
  351. }
  352. if (value == DataGridViewAutoSizeColumnsMode.Fill) {
  353. foreach (DataGridViewColumn col in columns) {
  354. if (col.AutoSizeMode == DataGridViewAutoSizeColumnMode.NotSet) {
  355. if (col.Frozen) {
  356. throw new InvalidOperationException("Cant set this property to Fill in this DataGridView.");
  357. }
  358. }
  359. }
  360. }
  361. autoSizeColumnsMode = value;
  362. AutoResizeColumns (value);
  363. Invalidate ();
  364. }
  365. }
  366. [DefaultValue (DataGridViewAutoSizeRowsMode.None)]
  367. public DataGridViewAutoSizeRowsMode AutoSizeRowsMode {
  368. get { return autoSizeRowsMode; }
  369. set {
  370. if (autoSizeRowsMode != value) {
  371. if (!Enum.IsDefined(typeof(DataGridViewAutoSizeRowsMode), value)) {
  372. throw new InvalidEnumArgumentException("Value is not valid DataGridViewRowsMode.");
  373. }
  374. if ((value == DataGridViewAutoSizeRowsMode.AllHeaders || value == DataGridViewAutoSizeRowsMode.DisplayedHeaders) && rowHeadersVisible == false) {
  375. throw new InvalidOperationException("Cant set this property to AllHeaders or DisplayedHeaders in this DataGridView.");
  376. }
  377. autoSizeRowsMode = value;
  378. if (value == DataGridViewAutoSizeRowsMode.None)
  379. foreach (DataGridViewRow row in Rows)
  380. row.ResetToExplicitHeight ();
  381. else
  382. AutoResizeRows (value);
  383. OnAutoSizeRowsModeChanged(new DataGridViewAutoSizeModeEventArgs(false));
  384. Invalidate ();
  385. ////////////////////////////////////////////////////////////////
  386. }
  387. }
  388. }
  389. [Browsable (false)]
  390. [EditorBrowsable (EditorBrowsableState.Never)]
  391. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  392. public override Color BackColor {
  393. get { return backColor; }
  394. set {
  395. if (backColor != value) {
  396. backColor = value;
  397. OnBackColorChanged(EventArgs.Empty);
  398. }
  399. }
  400. }
  401. public Color BackgroundColor {
  402. get { return backgroundColor; }
  403. set {
  404. if (backgroundColor != value) {
  405. if (value == Color.Empty) {
  406. throw new ArgumentException("Cant set an Empty color.");
  407. }
  408. backgroundColor = value;
  409. OnBackgroundColorChanged(EventArgs.Empty);
  410. }
  411. }
  412. }
  413. [Browsable (false)]
  414. [EditorBrowsable (EditorBrowsableState.Never)]
  415. public override Image BackgroundImage {
  416. get { return backgroundImage; }
  417. set {
  418. if (backgroundImage != value) {
  419. backgroundImage = value;
  420. OnBackgroundImageChanged(EventArgs.Empty);
  421. }
  422. }
  423. }
  424. [Browsable (false)]
  425. [EditorBrowsable (EditorBrowsableState.Never)]
  426. public override ImageLayout BackgroundImageLayout {
  427. get { return base.BackgroundImageLayout; }
  428. set { base.BackgroundImageLayout = value; }
  429. }
  430. [DefaultValue (BorderStyle.FixedSingle)]
  431. public BorderStyle BorderStyle {
  432. get { return borderStyle; }
  433. set {
  434. if (borderStyle != value) {
  435. if (!Enum.IsDefined(typeof(BorderStyle), value)) {
  436. throw new InvalidEnumArgumentException("Invalid border style.");
  437. }
  438. borderStyle = value;
  439. OnBorderStyleChanged(EventArgs.Empty);
  440. }
  441. }
  442. }
  443. internal int BorderWidth {
  444. get {
  445. switch (BorderStyle) {
  446. case BorderStyle.Fixed3D:
  447. return 2;
  448. case BorderStyle.FixedSingle:
  449. return 1;
  450. case BorderStyle.None:
  451. default:
  452. return 0;
  453. }
  454. }
  455. }
  456. [Browsable (true)]
  457. [DefaultValue (DataGridViewCellBorderStyle.Single)]
  458. public DataGridViewCellBorderStyle CellBorderStyle {
  459. get { return cellBorderStyle; }
  460. set {
  461. if (cellBorderStyle != value) {
  462. if (value == DataGridViewCellBorderStyle.Custom)
  463. throw new ArgumentException ("CellBorderStyle cannot be set to Custom.");
  464. cellBorderStyle = value;
  465. DataGridViewAdvancedBorderStyle border = new DataGridViewAdvancedBorderStyle ();
  466. switch (cellBorderStyle) {
  467. case DataGridViewCellBorderStyle.Single:
  468. border.All = DataGridViewAdvancedCellBorderStyle.Single;
  469. break;
  470. case DataGridViewCellBorderStyle.Raised:
  471. case DataGridViewCellBorderStyle.RaisedVertical:
  472. border.Bottom = DataGridViewAdvancedCellBorderStyle.None;
  473. border.Top = DataGridViewAdvancedCellBorderStyle.None;
  474. border.Left = DataGridViewAdvancedCellBorderStyle.Outset;
  475. border.Right = DataGridViewAdvancedCellBorderStyle.Outset;
  476. break;
  477. case DataGridViewCellBorderStyle.Sunken:
  478. border.All = DataGridViewAdvancedCellBorderStyle.Inset;
  479. break;
  480. case DataGridViewCellBorderStyle.None:
  481. border.All = DataGridViewAdvancedCellBorderStyle.None;
  482. break;
  483. case DataGridViewCellBorderStyle.SingleVertical:
  484. border.Bottom = DataGridViewAdvancedCellBorderStyle.None;
  485. border.Top = DataGridViewAdvancedCellBorderStyle.None;
  486. border.Left = DataGridViewAdvancedCellBorderStyle.None;
  487. border.Right = DataGridViewAdvancedCellBorderStyle.Single;
  488. break;
  489. case DataGridViewCellBorderStyle.SunkenVertical:
  490. border.Bottom = DataGridViewAdvancedCellBorderStyle.None;
  491. border.Top = DataGridViewAdvancedCellBorderStyle.None;
  492. border.Left = DataGridViewAdvancedCellBorderStyle.Inset;
  493. border.Right = DataGridViewAdvancedCellBorderStyle.Inset;
  494. break;
  495. case DataGridViewCellBorderStyle.SingleHorizontal:
  496. case DataGridViewCellBorderStyle.SunkenHorizontal:
  497. border.Bottom = DataGridViewAdvancedCellBorderStyle.Inset;
  498. border.Top = DataGridViewAdvancedCellBorderStyle.Inset;
  499. border.Left = DataGridViewAdvancedCellBorderStyle.None;
  500. border.Right = DataGridViewAdvancedCellBorderStyle.None;
  501. break;
  502. case DataGridViewCellBorderStyle.RaisedHorizontal:
  503. border.Bottom = DataGridViewAdvancedCellBorderStyle.Outset;
  504. border.Top = DataGridViewAdvancedCellBorderStyle.Outset;
  505. border.Left = DataGridViewAdvancedCellBorderStyle.None;
  506. border.Right = DataGridViewAdvancedCellBorderStyle.None;
  507. break;
  508. }
  509. advancedCellBorderStyle = border;
  510. OnCellBorderStyleChanged (EventArgs.Empty);
  511. }
  512. }
  513. }
  514. [Browsable (true)]
  515. [DefaultValue (DataGridViewClipboardCopyMode.EnableWithAutoHeaderText)]
  516. public DataGridViewClipboardCopyMode ClipboardCopyMode {
  517. get { return clipboardCopyMode; }
  518. set { clipboardCopyMode = value; }
  519. }
  520. [Browsable (false)]
  521. [EditorBrowsable (EditorBrowsableState.Advanced)]
  522. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  523. [DefaultValue (0)]
  524. public int ColumnCount {
  525. get { return columns.Count; }
  526. set {
  527. if (value < 0) {
  528. throw new ArgumentOutOfRangeException("ColumnCount",
  529. "ColumnCount must be >= 0.");
  530. }
  531. if (dataSource != null) {
  532. throw new InvalidOperationException("Cant change column count if DataSource is set.");
  533. }
  534. if (value < columns.Count) {
  535. for (int i = columns.Count -1; i >= value; i--) {
  536. columns.RemoveAt(i);
  537. }
  538. }
  539. else if (value > columns.Count) {
  540. for (int i = columns.Count; i < value; i++) {
  541. DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn ();
  542. columns.Add(col);
  543. }
  544. }
  545. }
  546. }
  547. [Browsable (true)]
  548. [DefaultValue (DataGridViewHeaderBorderStyle.Raised)]
  549. public DataGridViewHeaderBorderStyle ColumnHeadersBorderStyle {
  550. get { return columnHeadersBorderStyle; }
  551. set {
  552. if (columnHeadersBorderStyle != value) {
  553. columnHeadersBorderStyle = value;
  554. OnColumnHeadersBorderStyleChanged(EventArgs.Empty);
  555. }
  556. }
  557. }
  558. [AmbientValue (null)]
  559. public DataGridViewCellStyle ColumnHeadersDefaultCellStyle {
  560. get { return columnHeadersDefaultCellStyle; }
  561. set {
  562. if (columnHeadersDefaultCellStyle != value) {
  563. columnHeadersDefaultCellStyle = value;
  564. OnColumnHeadersDefaultCellStyleChanged(EventArgs.Empty);
  565. }
  566. }
  567. }
  568. [Localizable (true)]
  569. public int ColumnHeadersHeight {
  570. get { return columnHeadersHeight; }
  571. set {
  572. if (columnHeadersHeight != value) {
  573. if (value < 4) {
  574. throw new ArgumentOutOfRangeException("ColumnHeadersHeight",
  575. "Column headers height cant be less than 4.");
  576. }
  577. if (value > 32768 ) {
  578. throw new ArgumentOutOfRangeException("ColumnHeadersHeight",
  579. "Column headers height cannot be more than 32768.");
  580. }
  581. columnHeadersHeight = value;
  582. OnColumnHeadersHeightChanged(EventArgs.Empty);
  583. if (columnHeadersVisible)
  584. Invalidate ();
  585. }
  586. }
  587. }
  588. [RefreshProperties (RefreshProperties.All)]
  589. [DefaultValue (DataGridViewColumnHeadersHeightSizeMode.EnableResizing)]
  590. public DataGridViewColumnHeadersHeightSizeMode ColumnHeadersHeightSizeMode {
  591. get { return columnHeadersHeightSizeMode; }
  592. set {
  593. if (columnHeadersHeightSizeMode != value) {
  594. if (!Enum.IsDefined(typeof(DataGridViewColumnHeadersHeightSizeMode), value)) {
  595. throw new InvalidEnumArgumentException("Value is not a valid DataGridViewColumnHeadersHeightSizeMode.");
  596. }
  597. columnHeadersHeightSizeMode = value;
  598. OnColumnHeadersHeightSizeModeChanged(new DataGridViewAutoSizeModeEventArgs(false));
  599. }
  600. }
  601. }
  602. [DefaultValue (true)]
  603. public bool ColumnHeadersVisible {
  604. get { return columnHeadersVisible; }
  605. set {
  606. if (columnHeadersVisible != value) {
  607. columnHeadersVisible = value;
  608. Invalidate ();
  609. }
  610. }
  611. }
  612. [MergableProperty (false)]
  613. [Editor ("System.Windows.Forms.Design.DataGridViewColumnCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
  614. [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
  615. public DataGridViewColumnCollection Columns {
  616. get { return columns; }
  617. }
  618. [Browsable (false)]
  619. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  620. public DataGridViewCell CurrentCell {
  621. get { return currentCell; }
  622. set {
  623. /////////////////////////////////////////////////////
  624. /// *** InvalidOperationException ***
  625. /// Changes to the specified cell cannot be committed
  626. /// to the data cache, or the new cell is in a hidden
  627. /// row.
  628. /////////////////////////////////////////////////////
  629. if (value == null)
  630. MoveCurrentCell (-1, -1, true, false, false, true);
  631. else if (value.DataGridView != this)
  632. throw new ArgumentException("The cell is not in this DataGridView.");
  633. else
  634. MoveCurrentCell (value.OwningColumn.Index, value.OwningRow.Index, true, false, false, true);
  635. }
  636. }
  637. [Browsable (false)]
  638. public Point CurrentCellAddress {
  639. get { return currentCellAddress; }
  640. }
  641. [Browsable (false)]
  642. public DataGridViewRow CurrentRow {
  643. get {
  644. if (currentCell != null)
  645. return currentCell.OwningRow;
  646. return null;
  647. }
  648. }
  649. [DefaultValue ("")]
  650. [Editor ("System.Windows.Forms.Design.DataMemberListEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
  651. public string DataMember {
  652. get { return dataMember; }
  653. set {
  654. if (dataMember != value) {
  655. dataMember = value;
  656. if (BindingContext != null)
  657. ReBind ();
  658. OnDataMemberChanged(EventArgs.Empty);
  659. }
  660. }
  661. }
  662. [RefreshProperties (RefreshProperties.Repaint)]
  663. [DefaultValue (null)]
  664. [AttributeProvider (typeof (IListSource))]
  665. public object DataSource {
  666. get { return dataSource; }
  667. set {
  668. /* The System.Windows.Forms.DataGridView class supports the standard Windows Forms data-binding model. This means the data source can be of any type that implements:
  669. - the System.Collections.IList interface, including one-dimensional arrays.
  670. - the System.ComponentModel.IListSource interface, such as the System.Data.DataTable and System.Data.DataSet classes.
  671. - the System.ComponentModel.IBindingList interface, such as the System.ComponentModel.Collections.BindingList<> class.
  672. - the System.ComponentModel.IBindingListView interface, such as the System.Windows.Forms.BindingSource class.
  673. */
  674. if (!(value == null || value is IList || value is IListSource || value is IBindingList || value is IBindingListView))
  675. throw new NotSupportedException ("Type cannot be bound.");
  676. if (value != DataSource) {
  677. if (IsHandleCreated && value != null && BindingContext != null && BindingContext[value] != null)
  678. DataMember = String.Empty;
  679. ClearBinding ();
  680. // Do not set dataSource prior to the BindingContext check because there is some lazy initialization
  681. // code which might result in double call to ReBind here and in OnBindingContextChanged
  682. if (BindingContext != null) {
  683. dataSource = value;
  684. ReBind ();
  685. } else {
  686. dataSource = value;
  687. }
  688. OnDataSourceChanged (EventArgs.Empty);
  689. }
  690. }
  691. }
  692. internal CurrencyManager DataManager {
  693. get {
  694. if (DataSource != null && BindingContext != null) {
  695. string dataMember = DataMember;
  696. if (dataMember == null)
  697. dataMember = String.Empty;
  698. return (CurrencyManager) this.BindingContext[DataSource, dataMember];
  699. }
  700. return null;
  701. }
  702. }
  703. [AmbientValue (null)]
  704. public DataGridViewCellStyle DefaultCellStyle {
  705. get { return defaultCellStyle; }
  706. set {
  707. if (defaultCellStyle != value) {
  708. defaultCellStyle = value;
  709. OnDefaultCellStyleChanged(EventArgs.Empty);
  710. }
  711. }
  712. }
  713. public override Rectangle DisplayRectangle {
  714. get { return base.DisplayRectangle; }
  715. }
  716. [Browsable (false)]
  717. [EditorBrowsable (EditorBrowsableState.Advanced)]
  718. public Control EditingControl {
  719. get {
  720. return editingControl;
  721. }
  722. }
  723. [Browsable (false)]
  724. [EditorBrowsable (EditorBrowsableState.Advanced)]
  725. public Panel EditingPanel {
  726. get { throw new NotImplementedException(); }
  727. }
  728. [DefaultValue (DataGridViewEditMode.EditOnKeystrokeOrF2)]
  729. public DataGridViewEditMode EditMode {
  730. get { return editMode; }
  731. set {
  732. if (editMode != value) {
  733. editMode = value;
  734. OnEditModeChanged(EventArgs.Empty);
  735. }
  736. }
  737. }
  738. [DefaultValue (true)]
  739. public bool EnableHeadersVisualStyles {
  740. get { return enableHeadersVisualStyles; }
  741. set { enableHeadersVisualStyles = value; }
  742. }
  743. internal DataGridViewHeaderCell EnteredHeaderCell {
  744. get { return entered_header_cell; }
  745. set {
  746. if (entered_header_cell == value)
  747. return;
  748. if (ThemeEngine.Current.DataGridViewHeaderCellHasHotStyle (this)) {
  749. Region area_to_invalidate = new Region ();
  750. area_to_invalidate.MakeEmpty ();
  751. if (entered_header_cell != null)
  752. area_to_invalidate.Union (GetHeaderCellBounds (entered_header_cell));
  753. entered_header_cell = value;
  754. if (entered_header_cell != null)
  755. area_to_invalidate.Union (GetHeaderCellBounds (entered_header_cell));
  756. Invalidate (area_to_invalidate);
  757. area_to_invalidate.Dispose ();
  758. } else
  759. entered_header_cell = value;
  760. }
  761. }
  762. [Browsable (false)]
  763. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  764. public DataGridViewCell FirstDisplayedCell {
  765. get { return firstDisplayedCell; }
  766. set {
  767. if (value.DataGridView != this) {
  768. throw new ArgumentException("The cell is not in this DataGridView.");
  769. }
  770. firstDisplayedCell = value;
  771. }
  772. }
  773. [Browsable (false)]
  774. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  775. [EditorBrowsable (EditorBrowsableState.Advanced)]
  776. public int FirstDisplayedScrollingColumnHiddenWidth {
  777. get { return firstDisplayedScrollingColumnHiddenWidth; }
  778. }
  779. [Browsable (false)]
  780. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  781. public int FirstDisplayedScrollingColumnIndex {
  782. get { return firstDisplayedScrollingColumnIndex; }
  783. set { firstDisplayedScrollingColumnIndex = value; }
  784. }
  785. [Browsable (false)]
  786. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  787. public int FirstDisplayedScrollingRowIndex {
  788. get { return firstDisplayedScrollingRowIndex; }
  789. set { firstDisplayedScrollingRowIndex = value; }
  790. }
  791. [Browsable (false)]
  792. [EditorBrowsable (EditorBrowsableState.Advanced)]
  793. public override Font Font {
  794. get { return base.Font; }
  795. set { base.Font = value; }
  796. }
  797. [Browsable (false)]
  798. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  799. [EditorBrowsable (EditorBrowsableState.Advanced)]
  800. public override Color ForeColor {
  801. get { return base.ForeColor; }
  802. set { base.ForeColor = value; }
  803. }
  804. public Color GridColor {
  805. get { return gridColor; }
  806. set {
  807. if (gridColor != value) {
  808. if (value == Color.Empty) {
  809. throw new ArgumentException("Cant set an Empty color.");
  810. }
  811. gridColor = value;
  812. OnGridColorChanged(EventArgs.Empty);
  813. }
  814. }
  815. }
  816. [Browsable (false)]
  817. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  818. public int HorizontalScrollingOffset {
  819. get { return horizontalScrollingOffset; }
  820. set { horizontalScrollingOffset = value; }
  821. }
  822. [Browsable (false)]
  823. public bool IsCurrentCellDirty {
  824. get { return isCurrentCellDirty; }
  825. }
  826. [Browsable (false)]
  827. public bool IsCurrentCellInEditMode {
  828. get {
  829. if (currentCell == null) {
  830. return false;
  831. }
  832. return currentCell.IsInEditMode;
  833. }
  834. }
  835. [Browsable (false)]
  836. public bool IsCurrentRowDirty {
  837. get {
  838. if (!virtualMode)
  839. return IsCurrentCellDirty;
  840. QuestionEventArgs args = new QuestionEventArgs ();
  841. OnRowDirtyStateNeeded (args);
  842. return args.Response;
  843. }
  844. }
  845. [Browsable (false)]
  846. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  847. public DataGridViewCell this [int columnIndex, int rowIndex] {
  848. get { return rows[rowIndex].Cells[columnIndex]; }
  849. set { rows[rowIndex].Cells[columnIndex] = value; }
  850. }
  851. [Browsable (false)]
  852. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  853. public DataGridViewCell this [string columnName, int rowIndex] {
  854. get {
  855. int columnIndex = -1;
  856. foreach (DataGridViewColumn col in columns) {
  857. if (col.Name == columnName) {
  858. columnIndex = col.Index;
  859. break;
  860. }
  861. }
  862. return this[columnIndex, rowIndex];
  863. }
  864. set {
  865. int columnIndex = -1;
  866. foreach (DataGridViewColumn col in columns) {
  867. if (col.Name == columnName) {
  868. columnIndex = col.Index;
  869. break;
  870. }
  871. }
  872. this[columnIndex, rowIndex] = value;
  873. }
  874. }
  875. [DefaultValue (true)]
  876. public bool MultiSelect {
  877. get { return multiSelect; }
  878. set {
  879. if (multiSelect != value) {
  880. multiSelect = value;
  881. OnMultiSelectChanged(EventArgs.Empty);
  882. }
  883. }
  884. }
  885. [Browsable (false)]
  886. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  887. public int NewRowIndex {
  888. get {
  889. if (!AllowUserToAddRows || ColumnCount == 0) {
  890. return -1;
  891. }
  892. return rows.Count - 1;
  893. }
  894. }
  895. [Browsable (false)]
  896. [EditorBrowsable (EditorBrowsableState.Never)]
  897. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  898. public new Padding Padding {
  899. get { return Padding.Empty; }
  900. set { }
  901. }
  902. internal DataGridViewHeaderCell PressedHeaderCell {
  903. get { return pressed_header_cell; }
  904. }
  905. [Browsable (true)]
  906. [DefaultValue (false)]
  907. public bool ReadOnly {
  908. get { return readOnly; }
  909. set {
  910. if (readOnly != value) {
  911. readOnly = value;
  912. OnReadOnlyChanged(EventArgs.Empty);
  913. }
  914. }
  915. }
  916. [Browsable (false)]
  917. [EditorBrowsable (EditorBrowsableState.Advanced)]
  918. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  919. [DefaultValue (0)]
  920. public int RowCount {
  921. get { return rows.Count; }
  922. set {
  923. if (value < 0) {
  924. throw new ArgumentException("RowCount must be >= 0.");
  925. }
  926. if (value < 1 && AllowUserToAddRows) {
  927. throw new ArgumentException("RowCount must be >= 1 if AllowUserToAddRows is true.");
  928. }
  929. if (dataSource != null) {
  930. throw new InvalidOperationException("Cant change row count if DataSource is set.");
  931. }
  932. if (value < rows.Count) {
  933. int removeRangeEndIndex = rows.Count - 1;
  934. if (AllowUserToAddRows)
  935. removeRangeEndIndex--; // do not remove editing row
  936. int removeRangeStartIndex = value - 1;
  937. if (AllowUserToAddRows)
  938. removeRangeStartIndex--; // remove an extra row before/instead of the editing row
  939. for (int i = removeRangeEndIndex; i > removeRangeStartIndex; i--)
  940. rows.RemoveAt(i);
  941. } else if (value > rows.Count) {
  942. // If we need to add rows and don't have any columns,
  943. // we create one column
  944. if (ColumnCount == 0) {
  945. System.Diagnostics.Debug.Assert (rows.Count == 0);
  946. ColumnCount = 1; // this creates the edit row
  947. if (VirtualMode) {
  948. // update edit row height
  949. UpdateRowHeightInfo (0, false);
  950. }
  951. }
  952. List<DataGridViewRow> newRows = new List<DataGridViewRow> (value - rows.Count);
  953. for (int i = rows.Count; i < value; i++)
  954. newRows.Add ((DataGridViewRow) RowTemplateFull);
  955. rows.AddRange (newRows.ToArray());
  956. }
  957. }
  958. }
  959. [Browsable (true)]
  960. [DefaultValue (DataGridViewHeaderBorderStyle.Raised)]
  961. public DataGridViewHeaderBorderStyle RowHeadersBorderStyle {
  962. get { return rowHeadersBorderStyle; }
  963. set {
  964. if (rowHeadersBorderStyle != value) {
  965. rowHeadersBorderStyle = value;
  966. OnRowHeadersBorderStyleChanged(EventArgs.Empty);
  967. }
  968. }
  969. }
  970. [AmbientValue (null)]
  971. public DataGridViewCellStyle RowHeadersDefaultCellStyle {
  972. get { return rowHeadersDefaultCellStyle; }
  973. set {
  974. if (rowHeadersDefaultCellStyle != value) {
  975. rowHeadersDefaultCellStyle = value;
  976. OnRowHeadersDefaultCellStyleChanged(EventArgs.Empty);
  977. }
  978. }
  979. }
  980. [DefaultValue (true)]
  981. public bool RowHeadersVisible {
  982. get { return rowHeadersVisible; }
  983. set {
  984. if (rowHeadersVisible != value) {
  985. rowHeadersVisible = value;
  986. Invalidate ();
  987. }
  988. }
  989. }
  990. [Localizable (true)]
  991. public int RowHeadersWidth {
  992. get { return rowHeadersWidth; }
  993. set {
  994. if (rowHeadersWidth != value) {
  995. if (value < 4) {
  996. throw new ArgumentOutOfRangeException("RowHeadersWidth",
  997. "Row headers width cant be less than 4.");
  998. }
  999. if (value > 32768 ) {
  1000. throw new ArgumentOutOfRangeException("RowHeadersWidth",
  1001. "Row headers width cannot be more than 32768.");
  1002. }
  1003. rowHeadersWidth = value;
  1004. OnRowHeadersWidthChanged(EventArgs.Empty);
  1005. if (rowHeadersVisible)
  1006. Invalidate ();
  1007. }
  1008. }
  1009. }
  1010. [RefreshProperties (RefreshProperties.All)]
  1011. [DefaultValue (DataGridViewRowHeadersWidthSizeMode.EnableResizing)]
  1012. public DataGridViewRowHeadersWidthSizeMode RowHeadersWidthSizeMode {
  1013. get { return rowHeadersWidthSizeMode; }
  1014. set {
  1015. if (rowHeadersWidthSizeMode != value) {
  1016. if (!Enum.IsDefined(typeof(DataGridViewRowHeadersWidthSizeMode), value)) {
  1017. throw new InvalidEnumArgumentException("Value is not valid DataGridViewRowHeadersWidthSizeMode.");
  1018. }
  1019. rowHeadersWidthSizeMode = value;
  1020. OnRowHeadersWidthSizeModeChanged(new DataGridViewAutoSizeModeEventArgs(false));
  1021. }
  1022. }
  1023. }
  1024. [Browsable (false)]
  1025. public DataGridViewRowCollection Rows {
  1026. get { return rows; }
  1027. }
  1028. public DataGridViewCellStyle RowsDefaultCellStyle {
  1029. get { return rowsDefaultCellStyle; }
  1030. set {
  1031. if (rowsDefaultCellStyle != value) {
  1032. rowsDefaultCellStyle = value;
  1033. OnRowsDefaultCellStyleChanged(EventArgs.Empty);
  1034. }
  1035. }
  1036. }
  1037. // RowTemplate is just the row, it does not contain Cells
  1038. [Browsable (true)]
  1039. [DesignerSerializationVisibility (DesignerSerializationVisibility.Content)]
  1040. public DataGridViewRow RowTemplate {
  1041. get {
  1042. if (rowTemplate == null)
  1043. rowTemplate = new DataGridViewRow ();
  1044. return rowTemplate;
  1045. }
  1046. set {
  1047. rowTemplate = value;
  1048. }
  1049. }
  1050. // Take the RowTemplate, clone it, and add Cells
  1051. // Note this is not stored, so you don't need to Clone it
  1052. internal DataGridViewRow RowTemplateFull {
  1053. get {
  1054. DataGridViewRow row = (DataGridViewRow) RowTemplate.Clone ();
  1055. for (int i = row.Cells.Count; i < Columns.Count; i++) {
  1056. DataGridViewCell template = columns [i].CellTemplate;
  1057. if (template == null)
  1058. throw new InvalidOperationException ("At least one of the DataGridView control's columns has no cell template.");
  1059. row.Cells.Add ((DataGridViewCell) template.Clone ());
  1060. }
  1061. return row;
  1062. }
  1063. }
  1064. internal override bool ScaleChildrenInternal {
  1065. get { return false; }
  1066. }
  1067. [DefaultValue (ScrollBars.Both)]
  1068. [Localizable (true)]
  1069. public ScrollBars ScrollBars {
  1070. get { return scrollBars; }
  1071. set {
  1072. if (!Enum.IsDefined(typeof(ScrollBars), value)) {
  1073. throw new InvalidEnumArgumentException("Invalid ScrollBars value.");
  1074. }
  1075. ////////////////////////////////////////////////////////////
  1076. /// *** InvalidOperationException ***
  1077. /// The System.Windows.Forms.DataGridView is unable to
  1078. /// scroll due to a cell change that cannot be committed
  1079. /// or canceled.
  1080. ///////////////////////////////////////////////////////////
  1081. scrollBars = value;
  1082. PerformLayout ();
  1083. Invalidate ();
  1084. }
  1085. }
  1086. [Browsable (false)]
  1087. public DataGridViewSelectedCellCollection SelectedCells {
  1088. get {
  1089. DataGridViewSelectedCellCollection selectedCells = new DataGridViewSelectedCellCollection();
  1090. foreach (DataGridViewRow row in rows) {
  1091. foreach (DataGridViewCell cell in row.Cells) {
  1092. if (cell.Selected) {
  1093. selectedCells.InternalAdd(cell);
  1094. }
  1095. }
  1096. }
  1097. return selectedCells;
  1098. }
  1099. }
  1100. [Browsable (false)]
  1101. public DataGridViewSelectedColumnCollection SelectedColumns {
  1102. get
  1103. {
  1104. DataGridViewSelectedColumnCollection result = new DataGridViewSelectedColumnCollection ();
  1105. if (selectionMode != DataGridViewSelectionMode.FullColumnSelect && selectionMode != DataGridViewSelectionMode.ColumnHeaderSelect)
  1106. return result;
  1107. result.InternalAddRange (selected_columns);
  1108. return result;
  1109. }
  1110. }
  1111. [Browsable (false)]
  1112. public DataGridViewSelectedRowCollection SelectedRows {
  1113. get {
  1114. DataGridViewSelectedRowCollection result = new DataGridViewSelectedRowCollection (this);
  1115. if (selectionMode != DataGridViewSelectionMode.FullRowSelect && selectionMode != DataGridViewSelectionMode.RowHeaderSelect)
  1116. return result;
  1117. result.InternalAddRange (selected_rows);
  1118. return result;
  1119. }
  1120. }
  1121. [Browsable (true)]
  1122. [DefaultValue (DataGridViewSelectionMode.RowHeaderSelect)]
  1123. public DataGridViewSelectionMode SelectionMode {
  1124. get { return selectionMode; }
  1125. set {
  1126. if (!Enum.IsDefined (typeof(DataGridViewSelectionMode), value))
  1127. throw new InvalidEnumArgumentException ("Value is not valid DataGridViewSelectionMode.");
  1128. if (value == DataGridViewSelectionMode.ColumnHeaderSelect || value == DataGridViewSelectionMode.FullColumnSelect)
  1129. foreach (DataGridViewColumn col in Columns)
  1130. if (col.SortMode == DataGridViewColumnSortMode.Automatic)
  1131. throw new InvalidOperationException (string.Format ("Cannot set SelectionMode to {0} because there are Automatic sort columns.", value));
  1132. selectionMode = value;
  1133. }
  1134. }
  1135. [DefaultValue (true)]
  1136. public bool ShowCellErrors {
  1137. get { return showCellErrors; }
  1138. set { showCellErrors = value; }
  1139. }
  1140. [DefaultValue (true)]
  1141. public bool ShowCellToolTips {
  1142. get { return showCellToolTips; }
  1143. set { showCellToolTips = value; }
  1144. }
  1145. [DefaultValue (true)]
  1146. public bool ShowEditingIcon {
  1147. get { return showEditingIcon; }
  1148. set { showEditingIcon = value; }
  1149. }
  1150. [DefaultValue (true)]
  1151. public bool ShowRowErrors {
  1152. get { return showRowErrors; }
  1153. set { showRowErrors = value; }
  1154. }
  1155. [Browsable (false)]
  1156. public DataGridViewColumn SortedColumn {
  1157. get { return sortedColumn; }
  1158. }
  1159. [Browsable (false)]
  1160. public SortOrder SortOrder {
  1161. get { return sortOrder; }
  1162. }
  1163. [DefaultValue (false)]
  1164. [EditorBrowsable (EditorBrowsableState.Advanced)]
  1165. public bool StandardTab {
  1166. get { return standardTab; }
  1167. set { standardTab = value; }
  1168. }
  1169. [Bindable (false)]
  1170. [Browsable (false)]
  1171. [EditorBrowsable (EditorBrowsableState.Never)]
  1172. public override string Text {
  1173. get { return base.Text; }
  1174. set { base.Text = value; }
  1175. }
  1176. [Browsable (false)]
  1177. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  1178. public DataGridViewHeaderCell TopLeftHeaderCell {
  1179. get {
  1180. if (topLeftHeaderCell == null) {
  1181. topLeftHeaderCell = new DataGridViewTopLeftHeaderCell ();
  1182. topLeftHeaderCell.SetDataGridView (this);
  1183. }
  1184. return topLeftHeaderCell;
  1185. }
  1186. set {
  1187. if (topLeftHeaderCell == value)
  1188. return;
  1189. if (topLeftHeaderCell != null)
  1190. topLeftHeaderCell.SetDataGridView (null);
  1191. topLeftHeaderCell = value;
  1192. if (topLeftHeaderCell != null)
  1193. topLeftHeaderCell.SetDataGridView (this);
  1194. }
  1195. }
  1196. [Browsable (false)]
  1197. [EditorBrowsable (EditorBrowsableState.Advanced)]
  1198. public Cursor UserSetCursor {
  1199. get { return userSetCursor; }
  1200. }
  1201. [Browsable (false)]
  1202. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  1203. public int VerticalScrollingOffset {
  1204. get { return verticalScrollingOffset; }
  1205. }
  1206. [MonoTODO ("VirtualMode is not supported.")]
  1207. [EditorBrowsable (EditorBrowsableState.Advanced)]
  1208. [DefaultValue (false)]
  1209. public bool VirtualMode {
  1210. get { return virtualMode; }
  1211. set { virtualMode = value; }
  1212. }
  1213. internal Control EditingControlInternal {
  1214. get {
  1215. return editingControl;
  1216. }
  1217. set {
  1218. if (value == editingControl)
  1219. return;
  1220. if (editingControl != null) {
  1221. // Can't use Controls.Remove (editingControls), because that method
  1222. // is overriden to not remove the editing control.
  1223. DataGridView.DataGridViewControlCollection ctrls = Controls as DataGridView.DataGridViewControlCollection;
  1224. if (ctrls != null) {
  1225. ctrls.RemoveInternal (editingControl);
  1226. } else {
  1227. Controls.Remove (editingControl);
  1228. }
  1229. editingControl.Dispose();
  1230. }
  1231. if (value != null) {
  1232. value.Visible = false;
  1233. Controls.Add (value);
  1234. }
  1235. editingControl = value;
  1236. }
  1237. }
  1238. static object AllowUserToAddRowsChangedEvent = new object ();
  1239. static object AllowUserToDeleteRowsChangedEvent = new object ();
  1240. static object AllowUserToOrderColumnsChangedEvent = new object ();
  1241. static object AllowUserToResizeColumnsChangedEvent = new object ();
  1242. static object AllowUserToResizeRowsChangedEvent = new object ();
  1243. static object AlternatingRowsDefaultCellStyleChangedEvent = new object ();
  1244. static object AutoGenerateColumnsChangedEvent = new object ();
  1245. static object AutoSizeColumnModeChangedEvent = new object ();
  1246. static object AutoSizeColumnsModeChangedEvent = new object ();
  1247. static object AutoSizeRowsModeChangedEvent = new object ();
  1248. static object BackgroundColorChangedEvent = new object ();
  1249. static object BorderStyleChangedEvent = new object ();
  1250. static object CancelRowEditEvent = new object ();
  1251. static object CellBeginEditEvent = new object ();
  1252. static object CellBorderStyleChangedEvent = new object ();
  1253. static object CellClickEvent = new object ();
  1254. static object CellContentClickEvent = new object ();
  1255. static object CellContentDoubleClickEvent = new object ();
  1256. static object CellContextMenuStripChangedEvent = new object ();
  1257. static object CellContextMenuStripNeededEvent = new object ();
  1258. static object CellDoubleClickEvent = new object ();
  1259. static object CellEndEditEvent = new object ();
  1260. static object CellEnterEvent = new object ();
  1261. static object CellErrorTextChangedEvent = new object ();
  1262. static object CellErrorTextNeededEvent = new object ();
  1263. static object CellFormattingEvent = new object ();
  1264. static object CellLeaveEvent = new object ();
  1265. static object CellMouseClickEvent = new object ();
  1266. static object CellMouseDoubleClickEvent = new object ();
  1267. static object CellMouseDownEvent = new object ();
  1268. static object CellMouseEnterEvent = new object ();
  1269. static object CellMouseLeaveEvent = new object ();
  1270. static object CellMouseMoveEvent = new object ();
  1271. static object CellMouseUpEvent = new object ();
  1272. static object CellPaintingEvent = new object ();
  1273. static object CellParsingEvent = new object ();
  1274. static object CellStateChangedEvent = new object ();
  1275. static object CellStyleChangedEvent = new object ();
  1276. static object CellStyleContentChangedEvent = new object ();
  1277. static object CellToolTipTextChangedEvent = new object ();
  1278. static object CellToolTipTextNeededEvent = new object ();
  1279. static object CellValidatedEvent = new object ();
  1280. static object CellValidatingEvent = new object ();
  1281. static object CellValueChangedEvent = new object ();
  1282. static object CellValueNeededEvent = new object ();
  1283. static object CellValuePushedEvent = new object ();
  1284. static object ColumnAddedEvent = new object ();
  1285. static object ColumnContextMenuStripChangedEvent = new object ();
  1286. static object ColumnDataPropertyNameChangedEvent = new object ();
  1287. static object ColumnDefaultCellStyleChangedEvent = new object ();
  1288. static object ColumnDisplayIndexChangedEvent = new object ();
  1289. static object ColumnDividerDoubleClickEvent = new object ();
  1290. static object ColumnDividerWidthChangedEvent = new object ();
  1291. static object ColumnHeaderCellChangedEvent = new object ();
  1292. static object ColumnHeaderMouseClickEvent = new object ();
  1293. static object ColumnHeaderMouseDoubleClickEvent = new object ();
  1294. static object ColumnHeadersBorderStyleChangedEvent = new object ();
  1295. static object ColumnHeadersDefaultCellStyleChangedEvent = new object ();
  1296. static object ColumnHeadersHeightChangedEvent = new object ();
  1297. static object ColumnHeadersHeightSizeModeChangedEvent = new object ();
  1298. static object ColumnMinimumWidthChangedEvent = new object ();
  1299. static object ColumnNameChangedEvent = new object ();
  1300. static object ColumnRemovedEvent = new object ();
  1301. static object ColumnSortModeChangedEvent = new object ();
  1302. static object ColumnStateChangedEvent = new object ();
  1303. static object ColumnToolTipTextChangedEvent = new object ();
  1304. static object ColumnWidthChangedEvent = new object ();
  1305. static object CurrentCellChangedEvent = new object ();
  1306. static object CurrentCellDirtyStateChangedEvent = new object ();
  1307. static object DataBindingCompleteEvent = new object ();
  1308. static object DataErrorEvent = new object ();
  1309. static object DataMemberChangedEvent = new object ();
  1310. static object DataSourceChangedEvent = new object ();
  1311. static object DefaultCellStyleChangedEvent = new object ();
  1312. static object DefaultValuesNeededEvent = new object ();
  1313. static object EditingControlShowingEvent = new object ();
  1314. static object EditModeChangedEvent = new object ();
  1315. static object GridColorChangedEvent = new object ();
  1316. static object MultiSelectChangedEvent = new object ();
  1317. static object NewRowNeededEvent = new object ();
  1318. static object ReadOnlyChangedEvent = new object ();
  1319. static object RowContextMenuStripChangedEvent = new object ();
  1320. static object RowContextMenuStripNeededEvent = new object ();
  1321. static object RowDefaultCellStyleChangedEvent = new object ();
  1322. static object RowDirtyStateNeededEvent = new object ();
  1323. static object RowDividerDoubleClickEvent = new object ();
  1324. static object RowDividerHeightChangedEvent = new object ();
  1325. static object RowEnterEvent = new object ();
  1326. static object RowErrorTextChangedEvent = new object ();
  1327. static object RowErrorTextNeededEvent = new object ();
  1328. static object RowHeaderCellChangedEvent = new object ();
  1329. static object RowHeaderMouseClickEvent = new object ();
  1330. static object RowHeaderMouseDoubleClickEvent = new object ();
  1331. static object RowHeadersBorderStyleChangedEvent = new object ();
  1332. static object RowHeadersDefaultCellStyleChangedEvent = new object ();
  1333. static object RowHeadersWidthChangedEvent = new object ();
  1334. static object RowHeadersWidthSizeModeChangedEvent = new object ();
  1335. static object RowHeightChangedEvent = new object ();
  1336. static object RowHeightInfoNeededEvent

Large files files are truncated, but you can click here to view the full file