This topic has not yet been rated - Rate this topic

DataGridBoolColumn Class

Specifies a column in which each cell contains a check box for representing a Boolean value.

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Windows.Forms.DataGridColumnStyle
        System.Windows.Forms.DataGridBoolColumn

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
public class DataGridBoolColumn : DataGridColumnStyle

The DataGridBoolColumn type exposes the following members.

  Name Description
Public method DataGridBoolColumn() Initializes a new instance of the DataGridBoolColumn class.
Public method DataGridBoolColumn(PropertyDescriptor) Initializes a new instance of a DataGridBoolColumn with the specified PropertyDescriptor.
Public method DataGridBoolColumn(PropertyDescriptor, Boolean) Initializes a new instance of a DataGridBoolColumn with the specified PropertyDescriptor, and specifying whether the column style is a default column.
Top
  Name Description
Public property Alignment Gets or sets the alignment of text in a column. (Inherited from DataGridColumnStyle.)
Public property AllowNull Gets or sets a value indicating whether null values are allowed.
Protected property CanRaiseEvents Gets a value indicating whether the component can raise an event. (Inherited from Component.)
Public property Container Gets the IContainer that contains the Component. (Inherited from Component.)
Public property DataGridTableStyle Gets the DataGridTableStyle for the column. (Inherited from DataGridColumnStyle.)
Protected property DesignMode Gets a value that indicates whether the Component is currently in design mode. (Inherited from Component.)
Protected property Events Gets the list of event handlers that are attached to this Component. (Inherited from Component.)
Public property FalseValue Gets or sets the actual value used when setting the value of the column to false.
Protected property FontHeight Gets the height of the column's font. (Inherited from DataGridColumnStyle.)
Public property HeaderAccessibleObject Infrastructure. Gets the AccessibleObject for the column. (Inherited from DataGridColumnStyle.)
Public property HeaderText Gets or sets the text of the column header. (Inherited from DataGridColumnStyle.)
Public property MappingName Gets or sets the name of the data member to map the column style to. (Inherited from DataGridColumnStyle.)
Public property NullText Gets or sets the text that is displayed when the column contains null. (Inherited from DataGridColumnStyle.)
Public property NullValue Gets or sets the actual value used when setting the value of the column to Value.
Public property PropertyDescriptor Gets or sets the PropertyDescriptor that determines the attributes of data displayed by the DataGridColumnStyle. (Inherited from DataGridColumnStyle.)
Public property ReadOnly Gets or sets a value indicating whether the data in the column can be edited. (Inherited from DataGridColumnStyle.)
Public property Site Gets or sets the ISite of the Component. (Inherited from Component.)
Public property TrueValue Gets or sets the actual value used when setting the value of the column to true.
Public property Width Gets or sets the width of the column. (Inherited from DataGridColumnStyle.)
Top
  Name Description
Protected method Abort Initiates a request to interrupt an edit procedure. (Overrides DataGridColumnStyle.Abort(Int32).)
Protected method BeginUpdate Suspends the painting of the column until the EndUpdate method is called. (Inherited from DataGridColumnStyle.)
Protected method CheckValidDataSource Throws an exception if the System.Windows.Forms.DataGrid does not have a valid data source, or if this column is not mapped to a valid property in the data source. (Inherited from DataGridColumnStyle.)
Protected method ColumnStartedEditing Informs the System.Windows.Forms.DataGrid that the user has begun editing the column. (Inherited from DataGridColumnStyle.)
Protected method Commit Initiates a request to complete an editing procedure. (Overrides DataGridColumnStyle.Commit(CurrencyManager, Int32).)
Protected method ConcedeFocus Notifies a column that it must relinquish the focus to the control it is hosting. (Overrides DataGridColumnStyle.ConcedeFocus().)
Protected method CreateHeaderAccessibleObject Gets the AccessibleObject for the column. (Inherited from DataGridColumnStyle.)
Public method CreateObjRef Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public method Dispose() Releases all resources used by the Component. (Inherited from Component.)
Protected method Dispose(Boolean) Releases the unmanaged resources used by the Component and optionally releases the managed resources. (Inherited from Component.)
Protected method Edit(CurrencyManager, Int32, Rectangle, Boolean) Prepares a cell for editing. (Inherited from DataGridColumnStyle.)
Protected method Edit(CurrencyManager, Int32, Rectangle, Boolean, String) Prepares the cell for editing using the specified CurrencyManager, row number, and Rectangle parameters. (Inherited from DataGridColumnStyle.)
Protected method Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean) Prepares the cell for editing a value. (Overrides DataGridColumnStyle.Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean).)
Protected method EndUpdate Resumes the painting of columns suspended by calling the BeginUpdate method. (Inherited from DataGridColumnStyle.)
Protected method EnterNullValue Enters a Value into the column. (Overrides DataGridColumnStyle.EnterNullValue().)
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Releases unmanaged resources and performs other cleanup operations before the Component is reclaimed by garbage collection. (Inherited from Component.)
Protected method GetColumnValueAtRow Gets the value at the specified row. (Overrides DataGridColumnStyle.GetColumnValueAtRow(CurrencyManager, Int32).)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetLifetimeService Retrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Protected method GetMinimumHeight Gets the height of a cell in a column. (Overrides DataGridColumnStyle.GetMinimumHeight().)
Protected method GetPreferredHeight Gets the height used when resizing columns. (Overrides DataGridColumnStyle.GetPreferredHeight(Graphics, Object).)
Protected method GetPreferredSize Gets the optimum width and height of a cell given a specific value to contain. (Overrides DataGridColumnStyle.GetPreferredSize(Graphics, Object).)
Protected method GetService Returns an object that represents a service provided by the Component or by its Container. (Inherited from Component.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method InitializeLifetimeService Obtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Protected method Invalidate Redraws the column and causes a paint message to be sent to the control. (Inherited from DataGridColumnStyle.)
Protected method MemberwiseClone() Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method MemberwiseClone(Boolean) Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.)
Protected method Paint(Graphics, Rectangle, CurrencyManager, Int32) Infrastructure. Draws the DataGridBoolColumn with the given Graphics, Rectangle and row number. (Overrides DataGridColumnStyle.Paint(Graphics, Rectangle, CurrencyManager, Int32).)
Protected method Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean) Infrastructure. Draws the DataGridBoolColumn with the given Graphics, Rectangle, row number, and alignment settings. (Overrides DataGridColumnStyle.Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean).)
Protected method Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean) Draws the DataGridBoolColumn with the given Graphics, Rectangle, row number, Brush, and Color. (Overrides DataGridColumnStyle.Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean).)
Protected method ReleaseHostedControl Allows the column to free resources when the control it hosts is not needed. (Inherited from DataGridColumnStyle.)
Public method ResetHeaderText Resets the HeaderText to its default value, null. (Inherited from DataGridColumnStyle.)
Protected method SetColumnValueAtRow Sets the value of a specified row. (Overrides DataGridColumnStyle.SetColumnValueAtRow(CurrencyManager, Int32, Object).)
Protected method SetDataGrid Sets the System.Windows.Forms.DataGrid control that this column belongs to. (Inherited from DataGridColumnStyle.)
Protected method SetDataGridInColumn Sets the System.Windows.Forms.DataGrid for the column. (Inherited from DataGridColumnStyle.)
Public method ToString Returns a String containing the name of the Component, if any. This method should not be overridden. (Inherited from Component.)
Protected method UpdateUI Updates the value of a specified row with the given text. (Inherited from DataGridColumnStyle.)
Top
  Name Description
Public event AlignmentChanged Occurs when the Alignment property value changes. (Inherited from DataGridColumnStyle.)
Public event AllowNullChanged Occurs when the AllowNull property is changed.
Public event Disposed Occurs when the component is disposed by a call to the Dispose method. (Inherited from Component.)
Public event FalseValueChanged Occurs when the FalseValue property is changed.
Public event FontChanged Occurs when the column's font changes. (Inherited from DataGridColumnStyle.)
Public event HeaderTextChanged Occurs when the HeaderText property value changes. (Inherited from DataGridColumnStyle.)
Public event MappingNameChanged Occurs when the MappingName value changes. (Inherited from DataGridColumnStyle.)
Public event NullTextChanged Occurs when the NullText value changes. (Inherited from DataGridColumnStyle.)
Public event PropertyDescriptorChanged Occurs when the PropertyDescriptor property value changes. (Inherited from DataGridColumnStyle.)
Public event ReadOnlyChanged Occurs when the ReadOnly property value changes. (Inherited from DataGridColumnStyle.)
Public event TrueValueChanged Occurs when the TrueValue property value is changed.
Public event WidthChanged Occurs when the Width property value changes. (Inherited from DataGridColumnStyle.)
Top
  Name Description
Explicit interface implemetation Private method IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing Informs the DataGrid control that the user has begun editing the column. (Inherited from DataGridColumnStyle.)
Top

The DataGridBoolColumn derives from the abstract class DataGridColumnStyle. At run time, the DataGridBoolColumn contains check boxes in each cell that have three states by default: checked (true), unchecked (false), and Value. To use two-state check boxes, set the AllowNull property to false.

Properties added to the class include FalseValue, NullValue, and TrueValue. These properties specify the value underlying each of the column's states.

The following code example first creates a new DataGridBoolColumn and adds it to the GridColumnStylesCollection of a DataGridTableStyle.


using System;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
using System.ComponentModel;

public class MyForm : Form 
{
    private DataTable myTable;
    private DataGrid myGrid = new DataGrid();

    public MyForm() : base() 
    {
        try
        {
            InitializeComponent();

            myTable = new DataTable("NamesTable");
            myTable.Columns.Add(new DataColumn("Name"));
            DataColumn column = new DataColumn
                ("id", typeof(System.Int32));
            myTable.Columns.Add(column);
            myTable.Columns.Add(new 
                DataColumn("calculatedField", typeof(bool)));
            DataSet namesDataSet = new DataSet();
            namesDataSet.Tables.Add(myTable);
            myGrid.SetDataBinding(namesDataSet, "NamesTable");

            AddTableStyle();
            AddData();
        }
        catch (System.Exception exc)
        {
            Console.WriteLine(exc.ToString());
        }
    }


    private void grid_Enter(object sender, EventArgs e) 
    {
        myGrid.CurrentCell = new DataGridCell(2,2);
    }

    private void AddTableStyle()
    {
        // Map a new  TableStyle to the DataTable. Then 
        // add DataGridColumnStyle objects to the collection
        // of column styles with appropriate mappings.
        DataGridTableStyle dgt = new DataGridTableStyle();
        dgt.MappingName = "NamesTable";

        DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn();
        dgtbc.MappingName = "Name";
        dgtbc.HeaderText= "Name";
        dgt.GridColumnStyles.Add(dgtbc);

        dgtbc = new DataGridTextBoxColumn();
        dgtbc.MappingName = "id";
        dgtbc.HeaderText= "id";
        dgt.GridColumnStyles.Add(dgtbc);

        DataGridBoolColumnInherit db = 
            new DataGridBoolColumnInherit();
        db.HeaderText= "less than 1000 = blue";
        db.Width= 150;
        db.MappingName = "calculatedField";
        dgt.GridColumnStyles.Add(db);

        myGrid.TableStyles.Add(dgt);

        // This expression instructs the grid to change
        // the color of the inherited DataGridBoolColumn
        // according to the value of the id field. If it's
        // less than 1000, the row is blue. Otherwise,
        // the color is yellow.
        db.Expression = "id < 1000";
    }

    private void AddData() 
    {
        // Add data with varying numbers for the id field.
        // If the number is over 1000, the cell will paint
        // yellow. Otherwise, it will be blue.
        DataRow dRow = myTable.NewRow();

        dRow["Name"] = "name 1 ";
        dRow["id"] = 999;
        myTable.Rows.Add(dRow);

        dRow = myTable.NewRow();
        dRow["Name"] = "name 2";
        dRow["id"] = 2300;
        myTable.Rows.Add(dRow);

        dRow = myTable.NewRow();
        dRow["Name"] = "name 3";
        dRow["id"] = 120;
        myTable.Rows.Add(dRow);

        dRow = myTable.NewRow();
        dRow["Name"] = "name 4";
        dRow["id"] = 4023;
        myTable.Rows.Add(dRow);

        dRow = myTable.NewRow();
        dRow["Name"] = "name 5";
        dRow["id"] = 2345;
        myTable.Rows.Add(dRow);

        myTable.AcceptChanges();
    }

    private void InitializeComponent() 
    {
        this.Size = new Size(500, 500);
        myGrid.Size = new Size(350, 250);
        myGrid.TabStop = true;
        myGrid.TabIndex = 1;

        this.StartPosition = FormStartPosition.CenterScreen;
        this.Controls.Add(myGrid);
      }
    [STAThread]
    public static void Main() 
    {
        Application.Run(new MyForm());
    }
}

public class DataGridBoolColumnInherit : DataGridBoolColumn 
{
    private SolidBrush trueBrush = Brushes.Blue as SolidBrush;
    private SolidBrush falseBrush = Brushes.Yellow as SolidBrush;
    private DataColumn expressionColumn = null;
    private static int count = 0;

    public Color FalseColor 
    {
        get 
        {
            return falseBrush.Color;
        }
        set 
        {
            falseBrush = new SolidBrush(value);
            Invalidate();
        }
    }

    public Color TrueColor 
    {
        get 
        {
            return trueBrush.Color;
        }
        set 
        {
            trueBrush = new SolidBrush(value);
            Invalidate();
        }
    }

    public DataGridBoolColumnInherit() : base () 
    {
        count ++;
    }


    // This will work only with a DataSet or DataTable.
    // The code is not compatible with IBindingList implementations.
    public string Expression 
    {
        get 
        {
            return this.expressionColumn == null ? String.Empty : 
                this.expressionColumn.Expression;
        }
        set 
        {
            if (expressionColumn == null)
                AddExpressionColumn(value);
            else 
                expressionColumn.Expression = value;
            if (expressionColumn != null && 
                expressionColumn.Expression.Equals(value))
                return;
            Invalidate();
        }
    }

    private void AddExpressionColumn(string value) 
    {
        // Get the grid's data source. First check for a null 
        // table or data grid.
        if (this.DataGridTableStyle == null || 
            this.DataGridTableStyle.DataGrid == null)
            return;

        DataGrid myGrid = this.DataGridTableStyle.DataGrid;
        DataView myDataView = ((CurrencyManager) 
            myGrid.BindingContext[myGrid.DataSource, 
            myGrid.DataMember]).List 
            as DataView;

        // This works only with System.Data.DataTable.
        if (myDataView == null)
            return;

        // If the user already added a column with the name 
        // then exit. Otherwise, add the column and set the 
        // expression to the value passed to this function.
        DataColumn col = myDataView.Table.Columns["__Computed__Column__"];
        if (col != null)
            return;
        col = new DataColumn("__Computed__Column__" + count.ToString());

        myDataView.Table.Columns.Add(col);
        col.Expression = value;
        expressionColumn = col;
    }

    // override the OnPaint method to paint the cell based on the expression.
    protected override void Paint(Graphics g, Rectangle bounds,
        CurrencyManager source, int rowNum,
        Brush backBrush, Brush foreBrush,
        bool alignToRight) 
    {
        bool trueExpression = false;
        bool hasExpression = false;
        DataRowView drv = source.List[rowNum] as DataRowView;

        hasExpression = this.expressionColumn != null && 
            this.expressionColumn.Expression != null && 
            !this.expressionColumn.Expression.Equals(String.Empty);

        Console.WriteLine(string.Format("hasExpressionValue {0}",hasExpression));
        // Get the value from the expression column.
        // For simplicity, we assume a True/False value for the 
        // expression column.
        if (hasExpression) 
        {
            object expr = drv.Row[expressionColumn.ColumnName];
            trueExpression = expr.Equals("True");
        }

        // Let the DataGridBoolColumn do the painting.
        if (!hasExpression)
            base.Paint(g, bounds, source, rowNum, 
                backBrush, foreBrush, alignToRight);

        // Paint using the expression color for true or false, as calculated.
        if (trueExpression)
            base.Paint(g, bounds, source, rowNum, 
                trueBrush, foreBrush, alignToRight);
        else
            base.Paint(g, bounds, source, rowNum, 
                falseBrush, foreBrush, alignToRight);
    }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ