//
-#if NET_2_0
-
using System;
using System.ComponentModel;
namespace System.Windows.Forms {
+ [Designer ("System.Windows.Forms.Design.DataGridViewColumnDesigner, " + Consts.AssemblySystem_Design,
+ "System.ComponentModel.Design.IDesigner")]
+ [TypeConverter (typeof (DataGridViewColumnConverter))]
+ [ToolboxItem ("")]
+ [DesignTimeVisible (false)]
public class DataGridViewColumn : DataGridViewBand, IComponent, IDisposable {
-
+ private bool auto_generated;
private DataGridViewAutoSizeColumnMode autoSizeMode;
private DataGridViewCell cellTemplate;
- //private ContextMenuStrip contextMenuStrip;
+ private ContextMenuStrip contextMenuStrip;
private string dataPropertyName;
private int displayIndex;
private int dividerWidth;
private float fillWeight;
private bool frozen;
private DataGridViewColumnHeaderCell headerCell;
- private string headerText = "";
- private DataGridViewAutoSizeColumnMode inheritedAutoSizeMode;
private bool isDataBound;
private int minimumWidth = 5;
private string name = "";
private bool readOnly;
- private DataGridViewTriState resizable = DataGridViewTriState.True;
private ISite site;
private DataGridViewColumnSortMode sortMode;
private string toolTipText;
private Type valueType;
private bool visible = true;
private int width = 100;
+ private int dataColumnIndex;
+
+ private bool headerTextSet = false;
public DataGridViewColumn () {
cellTemplate = null;
readOnly = false;
headerCell = new DataGridViewColumnHeaderCell();
headerCell.SetColumnIndex(Index);
+ headerCell.Value = string.Empty;
displayIndex = -1;
+ dataColumnIndex = -1;
+ dataPropertyName = string.Empty;
+ fillWeight = 100.0F;
+ sortMode = DataGridViewColumnSortMode.NotSortable;
+ SetState (DataGridViewElementStates.Visible);
}
public DataGridViewColumn (DataGridViewCell cellTemplate) : this () {
this.cellTemplate = (DataGridViewCell) cellTemplate.Clone();
}
+ [DefaultValue (DataGridViewAutoSizeColumnMode.NotSet)]
+ [RefreshProperties (RefreshProperties.Repaint)]
public DataGridViewAutoSizeColumnMode AutoSizeMode {
get { return autoSizeMode; }
- set { autoSizeMode = value; }
+ set {
+ if (autoSizeMode != value) {
+ DataGridViewAutoSizeColumnMode old_value = autoSizeMode;
+ autoSizeMode = value;
+
+ if (DataGridView != null) {
+ DataGridView.OnAutoSizeColumnModeChanged (new DataGridViewAutoSizeColumnModeEventArgs (this, old_value));
+ DataGridView.AutoResizeColumnsInternal ();
+ }
+ }
+ }
}
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Advanced)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public virtual DataGridViewCell CellTemplate {
get { return cellTemplate; }
- set {
- cellTemplate = value;
- if (DataGridView != null) {
- cellTemplate.SetDataGridView(DataGridView);
- }
- }
+ set { cellTemplate = value; }
}
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Advanced)]
public Type CellType {
get {
if (cellTemplate == null) {
}
}
- /*
+ [DefaultValue (null)]
public override ContextMenuStrip ContextMenuStrip {
get { return contextMenuStrip; }
set {
}
}
}
- */
+ [Browsable (true)]
+ [DefaultValue ("")]
+ [Editor ("System.Windows.Forms.Design.DataGridViewColumnDataPropertyNameEditor, " + Consts.AssemblySystem_Design,
+ typeof (System.Drawing.Design.UITypeEditor))]
+ [TypeConverter ("System.Windows.Forms.Design.DataMemberFieldConverter, " + Consts.AssemblySystem_Design)]
public string DataPropertyName {
get { return dataPropertyName; }
set {
}
}
+ [Browsable (true)]
public override DataGridViewCellStyle DefaultCellStyle {
get {
return base.DefaultCellStyle;
}
}
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public int DisplayIndex {
get {
if (displayIndex < 0) {
}
displayIndex = value;
if (DataGridView != null) {
+ DataGridView.Columns.RegenerateSortedList ();
DataGridView.OnColumnDisplayIndexChanged(new DataGridViewColumnEventArgs(this));
}
}
}
}
+ internal int DisplayIndexInternal {
+ get { return DisplayIndex; }
+ set { displayIndex = value; }
+ }
+
+ internal int DataColumnIndex {
+ get { return dataColumnIndex; }
+ set {
+ dataColumnIndex = value;
+ if (dataColumnIndex >= 0)
+ isDataBound = true;
+ }
+ }
+
+ [DefaultValue (0)]
public int DividerWidth {
get { return dividerWidth; }
set {
}
}
+ [DefaultValue (100)]
public float FillWeight {
get { return fillWeight; }
set {
}
}
+ [DefaultValue (false)]
+ [RefreshProperties (RefreshProperties.All)]
public override bool Frozen {
get { return frozen; }
set { frozen = value; }
/* When a column is frozen, all the columns to its left (or to its right in right-to-left languages) are frozen as well. The frozen and unfrozen columns form two groups. If column repositioning is enabled by setting the System.Windows.Forms.DataGridView.AllowUserToOrderColumns property to true, the user cannot drag a column from one group to the other.
Example */
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public DataGridViewColumnHeaderCell HeaderCell {
- get { return headerCell; }
+ get {
+ return headerCell;
+ }
set {
if (headerCell != value) {
headerCell = value;
}
}
+ [Localizable (true)]
public string HeaderText {
- get { return headerText; }
- set { headerText = value; }
+ get {
+ if (headerCell.Value == null) {
+ return String.Empty;
+ }
+ return (string) headerCell.Value;
+ }
+ set {
+ headerCell.Value = value;
+ headerTextSet = true;
+ }
}
+ internal bool AutoGenerated { get { return auto_generated; } set { auto_generated = value; } }
+ internal bool HeaderTextSet { get { return headerTextSet; } }
+
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Advanced)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public DataGridViewAutoSizeColumnMode InheritedAutoSizeMode {
- get { return inheritedAutoSizeMode; }
+ get {
+ if (this.DataGridView == null)
+ return this.autoSizeMode;
+
+ if (this.autoSizeMode != DataGridViewAutoSizeColumnMode.NotSet)
+ return this.autoSizeMode;
+
+ switch (this.DataGridView.AutoSizeColumnsMode) {
+ case DataGridViewAutoSizeColumnsMode.AllCells:
+ return DataGridViewAutoSizeColumnMode.AllCells;
+ case DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader:
+ return DataGridViewAutoSizeColumnMode.AllCellsExceptHeader;
+ case DataGridViewAutoSizeColumnsMode.ColumnHeader:
+ return DataGridViewAutoSizeColumnMode.ColumnHeader;
+ case DataGridViewAutoSizeColumnsMode.DisplayedCells:
+ return DataGridViewAutoSizeColumnMode.DisplayedCells;
+ case DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader:
+ return DataGridViewAutoSizeColumnMode.DisplayedCellsExceptHeader;
+ case DataGridViewAutoSizeColumnsMode.Fill:
+ return DataGridViewAutoSizeColumnMode.Fill;
+ default:
+ return DataGridViewAutoSizeColumnMode.None;
+ }
+ }
}
+ [Browsable (false)]
public override DataGridViewCellStyle InheritedStyle {
get {
if (DataGridView == null) {
}
}
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public bool IsDataBound {
get { return isDataBound; }
}
+ [DefaultValue (5)]
+ [RefreshProperties (RefreshProperties.Repaint)]
+ [Localizable (true)]
public int MinimumWidth {
get { return minimumWidth; }
set {
}
}
+ [Browsable (false)]
public string Name {
get { return name; }
set {
if (name != value) {
- name = value;
- headerCell.Value = value;
+ if (value == null)
+ name = string.Empty;
+ else
+ name = value;
+ if (!headerTextSet) {
+ headerCell.Value = name;
+ }
if (DataGridView != null) {
DataGridView.OnColumnNameChanged(new DataGridViewColumnEventArgs(this));
}
}
public override bool ReadOnly {
- get { return readOnly; }
+ get {
+
+ if (DataGridView != null && DataGridView.ReadOnly)
+ return true;
+
+ return readOnly;
+ }
set { readOnly = value; }
}
public override DataGridViewTriState Resizable {
- get { return resizable; }
- set { resizable = value; }
+ get { return base.Resizable; }
+ set { base.Resizable = value; }
}
- public virtual ISite Site {
+ [Browsable (false)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public ISite Site {
get { return site; }
set { site = value; }
}
+ [DefaultValue (DataGridViewColumnSortMode.NotSortable)]
public DataGridViewColumnSortMode SortMode {
get { return sortMode; }
set {
- // System.InvalidOperationException: The value assigned to the property conflicts with System.Windows.Forms.DataGridView.SelectionMode.
+ if (DataGridView != null && value == DataGridViewColumnSortMode.Automatic) {
+ if (DataGridView.SelectionMode == DataGridViewSelectionMode.FullColumnSelect ||
+ DataGridView.SelectionMode == DataGridViewSelectionMode.ColumnHeaderSelect)
+ throw new InvalidOperationException ("Column's SortMode cannot be set to Automatic "+
+ "while the DataGridView control's SelectionMode "+
+ "is set to FullColumnSelect or ColumnHeaderSelect.");
+ }
+
if (sortMode != value) {
sortMode = value;
if (DataGridView != null) {
}
}
+ [DefaultValue ("")]
+ [Localizable (true)]
public string ToolTipText {
- get { return toolTipText; }
+ get {
+ if (toolTipText == null)
+ return string.Empty;
+ return toolTipText; }
set {
if (toolTipText != value) {
toolTipText = value;
}
}
+ [Browsable (false)]
+ [DefaultValue (null)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public Type ValueType {
get { return valueType; }
set { valueType = value; }
}
+ [DefaultValue (true)]
+ [Localizable (true)]
public override bool Visible {
get { return visible; }
- set { visible = value; }
+ set {
+ visible = value;
+ if (DataGridView != null)
+ DataGridView.Invalidate ();
+ }
}
+ [Localizable (true)]
+ [RefreshProperties (RefreshProperties.Repaint)]
public int Width {
get { return width; }
set {
throw new ArgumentOutOfRangeException("Width is less than MinimumWidth");
}
width = value;
- if (DataGridView != null) {
+ if (DataGridView != null) {
+ DataGridView.Invalidate ();
DataGridView.OnColumnWidthChanged(new DataGridViewColumnEventArgs(this));
}
}
}
- //public sealed event EventHandler Disposed;
+ // XXX should we do something like Component.Events?
+ [Browsable (false)]
+ [EditorBrowsable (EditorBrowsableState.Advanced)]
public event EventHandler Disposed;
public override object Clone () {
*/
}
- //public sealed void Dispose () {
- //}
-
+ [MonoTODO("Actually calculate width")]
public virtual int GetPreferredWidth (DataGridViewAutoSizeColumnMode autoSizeColumnMode, bool fixedHeight) {
switch (autoSizeColumnMode) {
- case DataGridViewAutoSizeColumnMode.NotSet:
- case DataGridViewAutoSizeColumnMode.None:
- case DataGridViewAutoSizeColumnMode.Fill:
- throw new ArgumentException("AutoSizeColumnMode is invalid");
+ case DataGridViewAutoSizeColumnMode.NotSet:
+ case DataGridViewAutoSizeColumnMode.None:
+ case DataGridViewAutoSizeColumnMode.Fill:
+ throw new ArgumentException("AutoSizeColumnMode is invalid");
}
if (fixedHeight) {
- return 0;
+ return MinimumWidth;
}
else {
- return 0;
+ return MinimumWidth;
}
}
}
internal override void SetDataGridView (DataGridView dataGridView) {
- base.SetDataGridView(dataGridView);
- if (cellTemplate != null) {
- cellTemplate.SetDataGridView(dataGridView);
+ if (sortMode == DataGridViewColumnSortMode.Automatic && dataGridView != null && dataGridView.SelectionMode == DataGridViewSelectionMode.FullColumnSelect) {
+ throw new InvalidOperationException ("Column's SortMode cannot be set to Automatic while the DataGridView control's SelectionMode is set to FullColumnSelect.");
}
+
+ base.SetDataGridView (dataGridView);
headerCell.SetDataGridView(dataGridView);
}
}
}
-
+
+ internal class DataGridViewColumnConverter : TypeConverter
+ {
+ }
}
-#endif