Leer en inglés

Compartir a través de


DataGridBoolColumn Clase

Definición

Especifica una columna en la que cada celda contiene una casilla para representar un valor booleano.

C#
public class DataGridBoolColumn : System.Windows.Forms.DataGridColumnStyle
Herencia

Ejemplos

En el ejemplo de código siguiente se crea primero un objeto DataGridBoolColumn y se agrega a GridColumnStylesCollection de .DataGridTableStyle

C#
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);
    }
}

Comentarios

DataGridBoolColumn deriva de la abstract clase DataGridColumnStyle. En tiempo de ejecución, DataGridBoolColumn contiene casillas en cada celda que tienen tres estados de forma predeterminada: activada (true), desactivada (false) y Value. Para usar casillas de dos estados, establezca la AllowNull propiedad falseen .

Las propiedades agregadas a la clase incluyen FalseValue, NullValuey TrueValue. Estas propiedades especifican el valor subyacente a cada uno de los estados de la columna.

Constructores

DataGridBoolColumn()

Inicializa una nueva instancia de la clase DataGridBoolColumn.

DataGridBoolColumn(PropertyDescriptor)

Inicializa una nueva instancia de la clase DataGridBoolColumn con el objeto PropertyDescriptor especificado.

DataGridBoolColumn(PropertyDescriptor, Boolean)

Inicializa una nueva instancia de la DataGridBoolColumn clase con el especificado PropertyDescriptory especifica si el estilo de columna es una columna predeterminada.

Propiedades

Alignment

Obtiene o establece la alineación de texto de una columna.

(Heredado de DataGridColumnStyle)
AllowNull

Obtiene o establece un valor que indica si se permiten valores nulos.

CanRaiseEvents

Obtiene un valor que indica si el componente puede generar un evento.

(Heredado de Component)
Container

Obtiene la interfaz IContainer que contiene la clase Component.

(Heredado de Component)
DataGridTableStyle

Obtiene el DataGridTableStyle de la columna.

(Heredado de DataGridColumnStyle)
DesignMode

Obtiene un valor que indica si Component está actualmente en modo de diseño.

(Heredado de Component)
Events

Obtiene la lista de controladores de eventos asociados a Component.

(Heredado de Component)
FalseValue

Obtiene o establece el valor real que se utiliza al establecer el valor de la columna en false.

FontHeight

Obtiene el alto de la fuente de la columna.

(Heredado de DataGridColumnStyle)
HeaderAccessibleObject

Obtiene el AccessibleObject de la columna.

(Heredado de DataGridColumnStyle)
HeaderText

Obtiene o establece el texto del encabezado de columna.

(Heredado de DataGridColumnStyle)
MappingName

Obtiene o establece el nombre del miembro de datos para asignar el estilo de columna.

(Heredado de DataGridColumnStyle)
NullText

Obtiene o establece el texto que se muestra cuando la columna contiene null.

(Heredado de DataGridColumnStyle)
NullValue

Obtiene o establece el valor real que se utiliza al establecer el valor de la columna en Value.

PropertyDescriptor

Obtiene o establece el PropertyDescriptor que determina los atributos de los datos mostrados por el DataGridColumnStyle.

(Heredado de DataGridColumnStyle)
ReadOnly

Obtiene o establece un valor que indica si se pueden editar los datos de la columna.

(Heredado de DataGridColumnStyle)
Site

Obtiene o establece ISite de Component.

(Heredado de Component)
TrueValue

Obtiene o establece el valor real que se utiliza al establecer el valor de la columna en true.

Width

Obtiene o establece el ancho de la columna.

(Heredado de DataGridColumnStyle)

Métodos

Abort(Int32)

Inicia una solicitud para interrumpir un procedimiento de edición.

BeginUpdate()

Suspende el proceso de pintar la columna hasta que se llama al método EndUpdate().

(Heredado de DataGridColumnStyle)
CheckValidDataSource(CurrencyManager)

Se produce una excepción si DataGrid no tiene un origen de datos válido, o si esta columna no está asignada a una propiedad válida en el origen de datos.

(Heredado de DataGridColumnStyle)
ColumnStartedEditing(Control)

Informa a DataGrid de que el usuario ha empezado a editar la columna.

(Heredado de DataGridColumnStyle)
Commit(CurrencyManager, Int32)

Inicia una solicitud para finalizar un procedimiento de edición.

ConcedeFocus()

Notifica a una columna que debe ceder el foco al control que hospeda.

CreateHeaderAccessibleObject()

Obtiene el AccessibleObject de la columna.

(Heredado de DataGridColumnStyle)
CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Dispose()

Libera todos los recursos que usa Component.

(Heredado de Component)
Dispose(Boolean)

Libera los recursos no administrados que usa Component y, de forma opcional, libera los recursos administrados.

(Heredado de Component)
Edit(CurrencyManager, Int32, Rectangle, Boolean)

Prepara una celda para que pueda editarse.

(Heredado de DataGridColumnStyle)
Edit(CurrencyManager, Int32, Rectangle, Boolean, String)

Prepara la celda para la edición con el CurrencyManager, el número de fila y los parámetros Rectangle especificados.

(Heredado de DataGridColumnStyle)
Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean)

Prepara la celda para editar un valor.

EndUpdate()

Reinicia el proceso de pintar las columnas que se suspendió al llamar al método BeginUpdate().

(Heredado de DataGridColumnStyle)
EnterNullValue()

Escribe un Value en la columna.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetColumnValueAtRow(CurrencyManager, Int32)

Obtiene el valor en la fila especificada.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetMinimumHeight()

Obtiene el alto de una celda de una columna.

GetPreferredHeight(Graphics, Object)

Obtiene el alto utilizado al cambiar el tamaño de las columnas.

GetPreferredSize(Graphics, Object)

Obtiene el ancho y el alto óptimos de una celda, dado un valor concreto que va a contener.

GetService(Type)

Devuelve un objeto que representa el servicio suministrado por Component o por Container.

(Heredado de Component)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
Invalidate()

Vuelve a dibujar la columna y hace que se envíe un mensaje de pintura al control.

(Heredado de DataGridColumnStyle)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.

(Heredado de MarshalByRefObject)
Paint(Graphics, Rectangle, CurrencyManager, Int32)

Dibuja el control DataGridBoolColumn con Graphics, Rectangle y el número de fila especificados.

Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean)

Pinta el control DataGridBoolColumn con los valores especificados de Graphics, Rectangle, número de fila y alineación.

Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean)

Pinta el control DataGridBoolColumn con los valores especificados de Graphics, Rectangle, número de fila, Brush y Color.

ReleaseHostedControl()

Permite que la columna libere recursos cuando el control contenido en esta no es necesario.

(Heredado de DataGridColumnStyle)
ResetHeaderText()

Restablece HeaderText a su valor predeterminado, null.

(Heredado de DataGridColumnStyle)
SetColumnValueAtRow(CurrencyManager, Int32, Object)

Establece el valor de una fila especificada.

SetDataGrid(DataGrid)

Establece el control DataGrid al que pertenece esta columna.

(Heredado de DataGridColumnStyle)
SetDataGridInColumn(DataGrid)

Establece el DataGrid para la columna.

(Heredado de DataGridColumnStyle)
ToString()

Devuelve una String que contiene el nombre del Component, si existe. Este método no se debe invalidar.

(Heredado de Component)
UpdateUI(CurrencyManager, Int32, String)

Actualiza el valor de una fila especificada con el texto dado.

(Heredado de DataGridColumnStyle)

Eventos

AlignmentChanged

Se produce cuando cambia el valor de la propiedad Alignment.

(Heredado de DataGridColumnStyle)
AllowNullChanged

Se produce cuando cambia la propiedad AllowNull.

Disposed

Tiene lugar cuando una llamada elimina el componente mediante una llamada al método Dispose().

(Heredado de Component)
FalseValueChanged

Se produce cuando cambia la propiedad FalseValue.

FontChanged

Aparece cuando cambia la fuente de la columna.

(Heredado de DataGridColumnStyle)
HeaderTextChanged

Se produce cuando cambia el valor de la propiedad HeaderText.

(Heredado de DataGridColumnStyle)
MappingNameChanged

Se produce cuando cambia el valor MappingName.

(Heredado de DataGridColumnStyle)
NullTextChanged

Se produce cuando cambia el valor NullText.

(Heredado de DataGridColumnStyle)
PropertyDescriptorChanged

Se produce cuando cambia el valor de la propiedad PropertyDescriptor.

(Heredado de DataGridColumnStyle)
ReadOnlyChanged

Se produce cuando cambia el valor de la propiedad ReadOnly.

(Heredado de DataGridColumnStyle)
TrueValueChanged

Se produce cuando cambia el valor de la propiedad TrueValue.

WidthChanged

Se produce cuando cambia el valor de la propiedad Width.

(Heredado de DataGridColumnStyle)

Implementaciones de interfaz explícitas

IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control)

Informa al control DataGrid de que el usuario ha empezado a editar la columna.

(Heredado de DataGridColumnStyle)

Se aplica a

Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0

Consulte también