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:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
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.
20 // Copyright (c) 2004-2005 Novell, Inc.
24 // Peter Bartok <pbartok@novell.com>
25 // Jordi Mas i Hernandez <jordi@ximian.com>
31 using System.Collections;
32 using System.ComponentModel;
34 using System.Runtime.InteropServices;
37 using System.Runtime.Serialization;
39 namespace System.Windows.Forms
41 [DesignTimeVisible(false)]
43 public class DataGridTableStyle : Component, IDataGridEditingService
48 public static DataGridTableStyle DefaultTableStyle = new DataGridTableStyle (true);
50 #region Local Variables
51 private static readonly Color def_alternating_backcolor = ThemeEngine.Current.DataGridAlternatingBackColor;
52 private static readonly Color def_backcolor = ThemeEngine.Current.DataGridBackColor;
53 private static readonly Color def_forecolor = SystemColors.WindowText;
54 private static readonly Color def_gridline_color = ThemeEngine.Current.DataGridGridLineColor;
55 private static readonly Color def_header_backcolor = ThemeEngine.Current.DataGridHeaderBackColor;
56 private static readonly Font def_header_font = ThemeEngine.Current.DefaultFont;
57 private static readonly Color def_header_forecolor = ThemeEngine.Current.DataGridHeaderForeColor;
58 private static readonly Color def_link_color = ThemeEngine.Current.DataGridLinkColor;
59 private static readonly Color def_link_hovercolor = ThemeEngine.Current.DataGridLinkHoverColor;
60 private static readonly Color def_selection_backcolor = ThemeEngine.Current.DataGridSelectionBackColor;
61 private static readonly Color def_selection_forecolor = ThemeEngine.Current.DataGridSelectionForeColor;
62 private static readonly int def_preferredrow_height = ThemeEngine.Current.DefaultFont.Height + 3;
64 private bool allow_sorting;
65 private DataGrid datagrid;
66 private Color header_forecolor;
67 private string mapping_name;
68 private Color alternating_backcolor;
69 private bool columnheaders_visible;
70 private GridColumnStylesCollection column_styles;
71 private Color gridline_color;
72 private DataGridLineStyle gridline_style;
73 private Color header_backcolor;
74 private Font header_font;
75 private Color link_color;
76 private Color link_hovercolor;
77 private int preferredcolumn_width;
78 private int preferredrow_height;
79 private bool _readonly;
80 private bool rowheaders_visible;
81 private Color selection_backcolor;
82 private Color selection_forecolor;
83 private int rowheaders_width;
84 private Color backcolor;
85 private Color forecolor;
86 private bool is_default;
87 internal ArrayList table_relations;
88 CurrencyManager manager;
89 #endregion // Local Variables
92 public DataGridTableStyle ()
97 public DataGridTableStyle (bool isDefaultTableStyle)
99 is_default = isDefaultTableStyle;
100 allow_sorting = true;
102 header_forecolor = def_header_forecolor;
103 mapping_name = string.Empty;
104 table_relations = new ArrayList ();
105 column_styles = new GridColumnStylesCollection (this);
107 alternating_backcolor = def_alternating_backcolor;
108 columnheaders_visible = true;
109 gridline_color = def_gridline_color;
110 gridline_style = DataGridLineStyle.Solid;
111 header_backcolor = def_header_backcolor;
112 header_font = def_header_font;
113 link_color = def_link_color;
114 link_hovercolor = def_link_hovercolor;
115 preferredcolumn_width = ThemeEngine.Current.DataGridPreferredColumnWidth;
116 preferredrow_height = ThemeEngine.Current.DefaultFont.Height + 3;
118 rowheaders_visible = true;
119 selection_backcolor = def_selection_backcolor;
120 selection_forecolor = def_selection_forecolor;
121 rowheaders_width = 35;
122 backcolor = def_backcolor;
123 forecolor = def_forecolor;
126 public DataGridTableStyle (CurrencyManager listManager)
129 manager = listManager;
133 #region Public Instance Properties
135 public bool AllowSorting {
136 get { return allow_sorting; }
139 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
141 if (allow_sorting != value) {
142 allow_sorting = value;
143 OnAllowSortingChanged (EventArgs.Empty);
148 public Color AlternatingBackColor {
149 get { return alternating_backcolor; }
152 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
154 if (alternating_backcolor != value) {
155 alternating_backcolor = value;
156 OnAlternatingBackColorChanged (EventArgs.Empty);
161 public Color BackColor {
162 get { return backcolor; }
165 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
167 if (backcolor != value) {
169 // XXX This should be OnBackColorChanged, MS made a c&p error, I think
170 OnForeColorChanged (EventArgs.Empty);
176 public bool ColumnHeadersVisible {
178 return columnheaders_visible;
182 if (columnheaders_visible != value) {
183 columnheaders_visible = value;
184 OnColumnHeadersVisibleChanged (EventArgs.Empty);
190 public virtual DataGrid DataGrid {
191 get { return datagrid; }
193 if (datagrid != value) {
196 /* now set the value on all our column styles */
197 for (int i = 0; i < column_styles.Count; i ++) {
198 column_styles[i].SetDataGridInternal (datagrid);
204 public Color ForeColor {
205 get { return forecolor; }
208 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
210 if (forecolor != value) {
212 // XXX This should be OnForeColorChanged, MS made a c&p error, I think
213 OnBackColorChanged (EventArgs.Empty);
218 [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
220 public virtual GridColumnStylesCollection GridColumnStyles {
221 get { return column_styles; }
224 public Color GridLineColor {
225 get { return gridline_color; }
228 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
230 if (gridline_color != value) {
231 gridline_color = value;
232 OnGridLineColorChanged (EventArgs.Empty);
237 [DefaultValue(DataGridLineStyle.Solid)]
238 public DataGridLineStyle GridLineStyle {
239 get { return gridline_style; }
242 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
244 if (gridline_style != value) {
245 gridline_style = value;
246 OnGridLineStyleChanged (EventArgs.Empty);
251 public Color HeaderBackColor {
252 get { return header_backcolor; }
255 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
257 if (value == Color.Empty) {
258 throw new ArgumentNullException ("Color.Empty value is invalid.");
261 if (header_backcolor != value) {
262 header_backcolor = value;
263 OnHeaderBackColorChanged (EventArgs.Empty);
270 public Font HeaderFont {
271 get { return header_font; }
274 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
277 value = def_header_font;
279 if (header_font != value) {
281 OnHeaderFontChanged (EventArgs.Empty);
286 public Color HeaderForeColor {
287 get { return header_forecolor; }
290 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
292 if (header_forecolor != value) {
293 header_forecolor = value;
294 OnHeaderForeColorChanged (EventArgs.Empty);
299 public Color LinkColor {
300 get { return link_color; }
303 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
305 if (link_color != value) {
307 OnLinkColorChanged (EventArgs.Empty);
315 [EditorBrowsable(EditorBrowsableState.Never)]
317 public Color LinkHoverColor {
318 get { return link_hovercolor; }
320 if (link_hovercolor != value) {
321 link_hovercolor = value;
322 // XXX MS doesn't emit this event (even though they should...)
323 // OnLinkHoverColorChanged (EventArgs.Empty);
328 [Editor("System.Windows.Forms.Design.DataGridTableStyleMappingNameEditor, " + Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
332 public string MappingName {
333 get { return mapping_name; }
338 if (mapping_name != value) {
339 mapping_name = value;
340 OnMappingNameChanged (EventArgs.Empty);
346 [TypeConverter(typeof(DataGridPreferredColumnWidthTypeConverter))]
348 public int PreferredColumnWidth {
349 get { return preferredcolumn_width; }
352 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
355 throw new ArgumentException ("PreferredColumnWidth is less than 0");
358 if (preferredcolumn_width != value) {
359 preferredcolumn_width = value;
360 OnPreferredColumnWidthChanged (EventArgs.Empty);
366 public int PreferredRowHeight {
367 get { return preferredrow_height; }
370 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
372 if (preferredrow_height != value) {
373 preferredrow_height = value;
374 OnPreferredRowHeightChanged (EventArgs.Empty);
379 [DefaultValue(false)]
380 public virtual bool ReadOnly {
381 get { return _readonly; }
383 if (_readonly != value) {
385 OnReadOnlyChanged (EventArgs.Empty);
391 public bool RowHeadersVisible {
392 get { return rowheaders_visible; }
394 if (rowheaders_visible != value) {
395 rowheaders_visible = value;
396 OnRowHeadersVisibleChanged (EventArgs.Empty);
403 public int RowHeaderWidth {
404 get { return rowheaders_width; }
406 if (rowheaders_width != value) {
407 rowheaders_width = value;
408 OnRowHeaderWidthChanged (EventArgs.Empty);
413 public Color SelectionBackColor {
414 get { return selection_backcolor; }
417 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
419 if (selection_backcolor != value) {
420 selection_backcolor = value;
421 OnSelectionBackColorChanged (EventArgs.Empty);
426 [Description("The foreground color for the current data grid row")]
427 public Color SelectionForeColor {
428 get { return selection_forecolor; }
431 throw new ArgumentException ("Cannot change the value of this property on the default DataGridTableStyle.");
433 if (selection_forecolor != value) {
434 selection_forecolor = value;
435 OnSelectionForeColorChanged (EventArgs.Empty);
440 #endregion // Public Instance Properties
442 #region Private Instance Properties
443 internal DataGridLineStyle CurrentGridLineStyle {
445 if (is_default && datagrid != null) {
446 return datagrid.GridLineStyle;
449 return gridline_style;
453 internal Color CurrentGridLineColor {
455 if (is_default && datagrid != null) {
456 return datagrid.GridLineColor;
459 return gridline_color;
463 internal Color CurrentHeaderBackColor {
465 if (is_default && datagrid != null) {
466 return datagrid.HeaderBackColor;
469 return header_backcolor;
473 internal Color CurrentHeaderForeColor {
475 if (is_default && datagrid != null) {
476 return datagrid.HeaderForeColor;
479 return header_forecolor;
483 internal int CurrentPreferredColumnWidth {
485 if (is_default && datagrid != null) {
486 return datagrid.PreferredColumnWidth;
489 return preferredcolumn_width;
493 internal int CurrentPreferredRowHeight {
495 if (is_default && datagrid != null) {
496 return datagrid.PreferredRowHeight;
499 return preferredrow_height;
503 internal bool CurrentRowHeadersVisible {
505 if (is_default && datagrid != null) {
506 return datagrid.RowHeadersVisible;
509 return rowheaders_visible;
513 internal bool HasRelations {
514 get { return table_relations.Count > 0; }
517 internal string[] Relations {
519 string[] rel = new string[table_relations.Count];
520 table_relations.CopyTo (rel, 0);
525 #endregion Private Instance Properties
527 #region Public Instance Methods
530 public bool BeginEdit (DataGridColumnStyle gridColumn, int rowNumber)
532 throw new NotImplementedException ();
535 protected internal virtual DataGridColumnStyle CreateGridColumn (PropertyDescriptor prop)
537 return CreateGridColumn (prop, false);
540 protected internal virtual DataGridColumnStyle CreateGridColumn (PropertyDescriptor prop, bool isDefault)
542 if (prop.PropertyType == typeof (bool))
543 return new DataGridBoolColumn (prop, isDefault);
545 // At least to special cases with formats
546 if (prop.PropertyType.Equals (typeof (DateTime))) {
547 return new DataGridTextBoxColumn (prop, "d", isDefault);
550 if (prop.PropertyType.Equals (typeof (Int32)) ||
551 prop.PropertyType.Equals (typeof (Int16))) {
552 return new DataGridTextBoxColumn (prop, "G", isDefault);
555 return new DataGridTextBoxColumn (prop, isDefault);
559 protected override void Dispose (bool disposing)
561 base.Dispose (disposing);
565 public bool EndEdit ( DataGridColumnStyle gridColumn, int rowNumber, bool shouldAbort)
567 throw new NotImplementedException ();
570 protected virtual void OnAllowSortingChanged (EventArgs e)
572 EventHandler eh = (EventHandler)(Events [AllowSortingChangedEvent]);
577 protected virtual void OnAlternatingBackColorChanged (EventArgs e)
579 EventHandler eh = (EventHandler)(Events [AlternatingBackColorChangedEvent]);
584 protected virtual void OnBackColorChanged (EventArgs e)
586 EventHandler eh = (EventHandler)(Events [BackColorChangedEvent]);
591 protected virtual void OnColumnHeadersVisibleChanged (EventArgs e)
593 EventHandler eh = (EventHandler)(Events [ColumnHeadersVisibleChangedEvent]);
598 protected virtual void OnForeColorChanged (EventArgs e)
600 EventHandler eh = (EventHandler)(Events [ForeColorChangedEvent]);
605 protected virtual void OnGridLineColorChanged (EventArgs e)
607 EventHandler eh = (EventHandler)(Events [GridLineColorChangedEvent]);
612 protected virtual void OnGridLineStyleChanged (EventArgs e)
614 EventHandler eh = (EventHandler)(Events [GridLineStyleChangedEvent]);
619 protected virtual void OnHeaderBackColorChanged (EventArgs e)
621 EventHandler eh = (EventHandler)(Events [HeaderBackColorChangedEvent]);
626 protected virtual void OnHeaderFontChanged (EventArgs e)
628 EventHandler eh = (EventHandler)(Events [HeaderFontChangedEvent]);
633 protected virtual void OnHeaderForeColorChanged (EventArgs e)
635 EventHandler eh = (EventHandler)(Events [HeaderForeColorChangedEvent]);
640 protected virtual void OnLinkColorChanged (EventArgs e)
642 EventHandler eh = (EventHandler)(Events [LinkColorChangedEvent]);
647 protected virtual void OnLinkHoverColorChanged (EventArgs e)
649 EventHandler eh = (EventHandler)(Events [LinkHoverColorChangedEvent]);
654 protected virtual void OnMappingNameChanged (EventArgs e)
656 EventHandler eh = (EventHandler)(Events [MappingNameChangedEvent]);
661 protected virtual void OnPreferredColumnWidthChanged (EventArgs e)
663 EventHandler eh = (EventHandler)(Events [PreferredColumnWidthChangedEvent]);
668 protected virtual void OnPreferredRowHeightChanged (EventArgs e)
670 EventHandler eh = (EventHandler)(Events [PreferredRowHeightChangedEvent]);
675 protected virtual void OnReadOnlyChanged (EventArgs e)
677 EventHandler eh = (EventHandler)(Events [ReadOnlyChangedEvent]);
682 protected virtual void OnRowHeadersVisibleChanged (EventArgs e)
684 EventHandler eh = (EventHandler)(Events [RowHeadersVisibleChangedEvent]);
689 protected virtual void OnRowHeaderWidthChanged (EventArgs e)
691 EventHandler eh = (EventHandler)(Events [RowHeaderWidthChangedEvent]);
696 protected virtual void OnSelectionBackColorChanged (EventArgs e)
698 EventHandler eh = (EventHandler)(Events [SelectionBackColorChangedEvent]);
703 protected virtual void OnSelectionForeColorChanged (EventArgs e)
705 EventHandler eh = (EventHandler)(Events [SelectionForeColorChangedEvent]);
710 public void ResetAlternatingBackColor ()
712 AlternatingBackColor = def_alternating_backcolor;
715 public void ResetBackColor ()
717 BackColor = def_backcolor;
720 public void ResetForeColor ()
722 ForeColor = def_forecolor;
725 public void ResetGridLineColor ()
727 GridLineColor = def_gridline_color;
730 public void ResetHeaderBackColor ()
732 HeaderBackColor = def_header_backcolor;
735 public void ResetHeaderFont ()
737 HeaderFont = def_header_font;
740 public void ResetHeaderForeColor ()
742 HeaderForeColor = def_header_forecolor;
745 public void ResetLinkColor ()
747 LinkColor = def_link_color;
750 public void ResetLinkHoverColor ()
752 LinkHoverColor = def_link_hovercolor;
755 public void ResetSelectionBackColor ()
757 SelectionBackColor = def_selection_backcolor;
760 public void ResetSelectionForeColor ()
762 SelectionForeColor = def_selection_forecolor;
765 protected virtual bool ShouldSerializeAlternatingBackColor ()
767 return (alternating_backcolor != def_alternating_backcolor);
770 protected bool ShouldSerializeBackColor ()
772 return (backcolor != def_backcolor);
775 protected bool ShouldSerializeForeColor ()
777 return (forecolor != def_forecolor);
780 protected virtual bool ShouldSerializeGridLineColor ()
782 return (gridline_color != def_gridline_color);
785 protected virtual bool ShouldSerializeHeaderBackColor ()
787 return (header_backcolor != def_header_backcolor);
790 protected virtual bool ShouldSerializeHeaderForeColor ()
792 return (header_forecolor != def_header_forecolor);
795 protected virtual bool ShouldSerializeLinkColor ()
797 return (link_color != def_link_color);
800 protected virtual bool ShouldSerializeLinkHoverColor ()
802 return (link_hovercolor != def_link_hovercolor);
805 protected bool ShouldSerializePreferredRowHeight ()
807 return (preferredrow_height != def_preferredrow_height);
810 protected bool ShouldSerializeSelectionBackColor ()
812 return (selection_backcolor != def_selection_backcolor);
815 protected virtual bool ShouldSerializeSelectionForeColor ()
817 return (selection_forecolor != def_selection_forecolor);
819 #endregion // Protected Instance Methods
821 #region Private Instance Properties
822 // Create column styles for this TableStyle
823 internal void CreateColumnsForTable (bool onlyBind)
825 CurrencyManager mgr = manager;
826 DataGridColumnStyle st;
829 mgr = datagrid.ListManager;
835 for (int i = 0; i < column_styles.Count; i ++)
836 column_styles[i].bound = false;
838 table_relations.Clear ();
839 PropertyDescriptorCollection propcol = mgr.GetItemProperties ();
841 for (int i = 0; i < propcol.Count; i++)
843 // The column style is already provided by the user
844 st = column_styles[propcol[i].Name];
847 st.Width = CurrentPreferredColumnWidth;
849 st.PropertyDescriptor = propcol[i];
854 if (onlyBind == true)
857 if (typeof (IBindingList).IsAssignableFrom (propcol[i].PropertyType)) {
858 table_relations.Add (propcol[i].Name);
860 st = CreateGridColumn (propcol[i], true);
863 st.MappingName = propcol[i].Name;
864 st.HeaderText = propcol[i].Name;
865 st.Width = CurrentPreferredColumnWidth;
866 column_styles.Add (st);
872 #endregion Private Instance Properties
875 static object AllowSortingChangedEvent = new object ();
876 static object AlternatingBackColorChangedEvent = new object ();
877 static object BackColorChangedEvent = new object ();
878 static object ColumnHeadersVisibleChangedEvent = new object ();
879 static object ForeColorChangedEvent = new object ();
880 static object GridLineColorChangedEvent = new object ();
881 static object GridLineStyleChangedEvent = new object ();
882 static object HeaderBackColorChangedEvent = new object ();
883 static object HeaderFontChangedEvent = new object ();
884 static object HeaderForeColorChangedEvent = new object ();
885 static object LinkColorChangedEvent = new object ();
886 static object LinkHoverColorChangedEvent = new object ();
887 static object MappingNameChangedEvent = new object ();
888 static object PreferredColumnWidthChangedEvent = new object ();
889 static object PreferredRowHeightChangedEvent = new object ();
890 static object ReadOnlyChangedEvent = new object ();
891 static object RowHeadersVisibleChangedEvent = new object ();
892 static object RowHeaderWidthChangedEvent = new object ();
893 static object SelectionBackColorChangedEvent = new object ();
894 static object SelectionForeColorChangedEvent = new object ();
896 public event EventHandler AllowSortingChanged {
897 add { Events.AddHandler (AllowSortingChangedEvent, value); }
898 remove { Events.RemoveHandler (AllowSortingChangedEvent, value); }
901 public event EventHandler AlternatingBackColorChanged {
902 add { Events.AddHandler (AlternatingBackColorChangedEvent, value); }
903 remove { Events.RemoveHandler (AlternatingBackColorChangedEvent, value); }
906 public event EventHandler BackColorChanged {
907 add { Events.AddHandler (BackColorChangedEvent, value); }
908 remove { Events.RemoveHandler (BackColorChangedEvent, value); }
911 public event EventHandler ColumnHeadersVisibleChanged {
912 add { Events.AddHandler (ColumnHeadersVisibleChangedEvent, value); }
913 remove { Events.RemoveHandler (ColumnHeadersVisibleChangedEvent, value); }
916 public event EventHandler ForeColorChanged {
917 add { Events.AddHandler (ForeColorChangedEvent, value); }
918 remove { Events.RemoveHandler (ForeColorChangedEvent, value); }
921 public event EventHandler GridLineColorChanged {
922 add { Events.AddHandler (GridLineColorChangedEvent, value); }
923 remove { Events.RemoveHandler (GridLineColorChangedEvent, value); }
926 public event EventHandler GridLineStyleChanged {
927 add { Events.AddHandler (GridLineStyleChangedEvent, value); }
928 remove { Events.RemoveHandler (GridLineStyleChangedEvent, value); }
931 public event EventHandler HeaderBackColorChanged {
932 add { Events.AddHandler (HeaderBackColorChangedEvent, value); }
933 remove { Events.RemoveHandler (HeaderBackColorChangedEvent, value); }
936 public event EventHandler HeaderFontChanged {
937 add { Events.AddHandler (HeaderFontChangedEvent, value); }
938 remove { Events.RemoveHandler (HeaderFontChangedEvent, value); }
941 public event EventHandler HeaderForeColorChanged {
942 add { Events.AddHandler (HeaderForeColorChangedEvent, value); }
943 remove { Events.RemoveHandler (HeaderForeColorChangedEvent, value); }
946 public event EventHandler LinkColorChanged {
947 add { Events.AddHandler (LinkColorChangedEvent, value); }
948 remove { Events.RemoveHandler (LinkColorChangedEvent, value); }
951 public event EventHandler LinkHoverColorChanged {
952 add { Events.AddHandler (LinkHoverColorChangedEvent, value); }
953 remove { Events.RemoveHandler (LinkHoverColorChangedEvent, value); }
956 public event EventHandler MappingNameChanged {
957 add { Events.AddHandler (MappingNameChangedEvent, value); }
958 remove { Events.RemoveHandler (MappingNameChangedEvent, value); }
961 public event EventHandler PreferredColumnWidthChanged {
962 add { Events.AddHandler (PreferredColumnWidthChangedEvent, value); }
963 remove { Events.RemoveHandler (PreferredColumnWidthChangedEvent, value); }
966 public event EventHandler PreferredRowHeightChanged {
967 add { Events.AddHandler (PreferredRowHeightChangedEvent, value); }
968 remove { Events.RemoveHandler (PreferredRowHeightChangedEvent, value); }
971 public event EventHandler ReadOnlyChanged {
972 add { Events.AddHandler (ReadOnlyChangedEvent, value); }
973 remove { Events.RemoveHandler (ReadOnlyChangedEvent, value); }
976 public event EventHandler RowHeadersVisibleChanged {
977 add { Events.AddHandler (RowHeadersVisibleChangedEvent, value); }
978 remove { Events.RemoveHandler (RowHeadersVisibleChangedEvent, value); }
981 public event EventHandler RowHeaderWidthChanged {
982 add { Events.AddHandler (RowHeaderWidthChangedEvent, value); }
983 remove { Events.RemoveHandler (RowHeaderWidthChangedEvent, value); }
986 public event EventHandler SelectionBackColorChanged {
987 add { Events.AddHandler (SelectionBackColorChangedEvent, value); }
988 remove { Events.RemoveHandler (SelectionBackColorChangedEvent, value); }
991 public event EventHandler SelectionForeColorChanged {
992 add { Events.AddHandler (SelectionForeColorChangedEvent, value); }
993 remove { Events.RemoveHandler (SelectionForeColorChangedEvent, value); }