Partilhar via


DataGridViewCheckBoxCell.ThreeState Propriedade

Definição

Obtém ou define um valor que indica se o modo ternário foi habilitado para o controle de caixa de seleção hospedada.

public:
 property bool ThreeState { bool get(); void set(bool value); };
public bool ThreeState { get; set; }
member this.ThreeState : bool with get, set
Public Property ThreeState As Boolean

Valor da propriedade

Boolean

true se o modo ternário estiver habilitado; false se o modo binário estiver habilitado. O padrão é false.

Exemplos

O exemplo de código a seguir usa um DataGridViewCheckBoxCell para controlar o status da iluminação do escritório. A FalseValue propriedade associa "turnedOff" falsea , a TrueValue propriedade associa "turnedOn" truee a IndeterminateValue propriedade associa "desconhecido" a indeterminado.

#using <System.Windows.Forms.dll>
#using <System.dll>
#using <System.Drawing.dll>
using namespace System;
using namespace System::IO;
using namespace System::Collections::Generic;
using namespace System::Windows::Forms;

public enum class LightStatus
{
    Unknown,
    TurnedOn,
    TurnedOff
};

public ref class TriValueVirtualCheckBox: public Form
{
private:
    DataGridView^ dataGridView1;

private:
    const int initialSize;

private:
    Dictionary<int, LightStatus>^ store;

public:
    TriValueVirtualCheckBox() :  Form(), initialSize(500)
    {
        dataGridView1 = gcnew DataGridView();
        store = gcnew Dictionary<int, LightStatus>();
        Text = this->GetType()->Name;

        for(int i = 0; i < initialSize; i++)
        {
            store->Add(i, LightStatus::Unknown);
        }

        Controls->Add(dataGridView1);
        dataGridView1->VirtualMode = true;
        dataGridView1->AllowUserToDeleteRows = false;
        dataGridView1->CellValueNeeded += 
            gcnew DataGridViewCellValueEventHandler(
            this, &TriValueVirtualCheckBox::dataGridView1_CellValueNeeded);
        dataGridView1->CellValuePushed += 
            gcnew DataGridViewCellValueEventHandler(
            this, &TriValueVirtualCheckBox::dataGridView1_CellValuePushed);

        dataGridView1->Columns->Add(CreateCheckBoxColumn());
        dataGridView1->Rows->AddCopies(0, initialSize);
    }

private:
    DataGridViewCheckBoxColumn^ CreateCheckBoxColumn()
    {
        DataGridViewCheckBoxColumn^ dataGridViewCheckBoxColumn1
            = gcnew DataGridViewCheckBoxColumn();
        dataGridViewCheckBoxColumn1->HeaderText = "Lights On";
        dataGridViewCheckBoxColumn1->TrueValue = LightStatus::TurnedOn;
        dataGridViewCheckBoxColumn1->FalseValue =
            LightStatus::TurnedOff;
        dataGridViewCheckBoxColumn1->IndeterminateValue
            = LightStatus::Unknown;
        dataGridViewCheckBoxColumn1->ThreeState = true;
        dataGridViewCheckBoxColumn1->ValueType = LightStatus::typeid;
        return dataGridViewCheckBoxColumn1;
    }

#pragma region "data store maintance"
private:
    void dataGridView1_CellValueNeeded(Object^ sender,
        DataGridViewCellValueEventArgs^ e)
    {
        e->Value = store[e->RowIndex];
    }

private:
    void dataGridView1_CellValuePushed(Object^ sender,
        DataGridViewCellValueEventArgs^ e)
    {
        store[e->RowIndex] = (LightStatus) e->Value;
    }
#pragma endregion

};

[STAThread]
int main()
{
    Application::Run(gcnew TriValueVirtualCheckBox());
}
using System;
using System.IO;
using System.Collections.Generic;
using System.Windows.Forms;

public class TriValueVirtualCheckBox:Form
{
    DataGridView dataGridView1 = new DataGridView();

    const int initialSize = 500;

    Dictionary<int, LightStatus> store 
        = new Dictionary<int, LightStatus>();

    public TriValueVirtualCheckBox() : base()
    {        
        Text = this.GetType().Name;

        int index = 0;
        for(index=0; index<=initialSize; index++)
            store.Add(index, LightStatus.Unknown);

        Controls.Add(dataGridView1);
        dataGridView1.VirtualMode = true;
        dataGridView1.AllowUserToDeleteRows = false;
        dataGridView1.CellValueNeeded += new 
            DataGridViewCellValueEventHandler(dataGridView1_CellValueNeeded);
        dataGridView1.CellValuePushed += new 
            DataGridViewCellValueEventHandler(dataGridView1_CellValuePushed);

        dataGridView1.Columns.Add(CreateCheckBoxColumn());
        dataGridView1.Rows.AddCopies(0, initialSize);
    }

    private DataGridViewCheckBoxColumn CreateCheckBoxColumn()
    {
        DataGridViewCheckBoxColumn dataGridViewCheckBoxColumn1 
            = new DataGridViewCheckBoxColumn();
        dataGridViewCheckBoxColumn1.HeaderText = "Lights On";
        dataGridViewCheckBoxColumn1.TrueValue = LightStatus.TurnedOn;
        dataGridViewCheckBoxColumn1.FalseValue = LightStatus.TurnedOff;
        dataGridViewCheckBoxColumn1.IndeterminateValue 
            = LightStatus.Unknown;
        dataGridViewCheckBoxColumn1.ThreeState = true;
        dataGridViewCheckBoxColumn1.ValueType = typeof(LightStatus);
        return dataGridViewCheckBoxColumn1;
    }

#region "data store maintance"
    private void dataGridView1_CellValueNeeded(object sender, 
        DataGridViewCellValueEventArgs e)
    {
        e.Value = store[e.RowIndex];
    }

    private void dataGridView1_CellValuePushed(object sender, 
        DataGridViewCellValueEventArgs e)
    {
        store[e.RowIndex] = (LightStatus) e.Value;
    }
#endregion

    [STAThreadAttribute()]
    public static void Main()
    {
        Application.Run(new TriValueVirtualCheckBox());
    }
}

public enum LightStatus
{
    Unknown, 
    TurnedOn, 
    TurnedOff
};
Imports System.IO
Imports System.Collections.Generic
Imports System.Windows.Forms

Public Class TriValueVirtualCheckBox
    Inherits System.Windows.Forms.Form

    Dim WithEvents dataGridView1 As New DataGridView

    Const initialSize As Integer = 500

    Dim store As New Dictionary(Of Integer, LightStatus)

    Public Sub New()
        MyBase.New()
        Text = Me.GetType().Name

        Dim index As Integer = 0
        For index = 0 To initialSize
            store.Add(index, LightStatus.Unknown)
        Next

        Controls.Add(dataGridView1)
        dataGridView1.VirtualMode = True
        dataGridView1.AllowUserToDeleteRows = False
        dataGridView1.Columns.Add(CreateCheckBoxColumn())
        dataGridView1.Rows.AddCopies(0, initialSize)
    End Sub

    Private Function CreateCheckBoxColumn() As DataGridViewCheckBoxColumn
        Dim dataGridViewCheckBoxColumn1 _
            As New DataGridViewCheckBoxColumn()
        dataGridViewCheckBoxColumn1.HeaderText = "Lights On"
        dataGridViewCheckBoxColumn1.TrueValue = LightStatus.TurnedOn
        dataGridViewCheckBoxColumn1.FalseValue = LightStatus.TurnedOff
        dataGridViewCheckBoxColumn1.IndeterminateValue = _
            LightStatus.Unknown
        dataGridViewCheckBoxColumn1.ThreeState = True
        dataGridViewCheckBoxColumn1.ValueType = GetType(LightStatus)
        Return dataGridViewCheckBoxColumn1
    End Function

#Region "data store maintance"
    Private Sub dataGridView1_CellValueNeeded(ByVal sender As Object, _
        ByVal e As DataGridViewCellValueEventArgs) _
        Handles dataGridView1.CellValueNeeded

        e.Value = store(e.RowIndex)
    End Sub

    Private Sub dataGridView1_CellValuePushed(ByVal sender As Object, _
        ByVal e As DataGridViewCellValueEventArgs) _
        Handles dataGridView1.CellValuePushed

        store.Item(e.RowIndex) = CType(e.Value, LightStatus)
    End Sub
#End Region

    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.Run(New TriValueVirtualCheckBox())
    End Sub
End Class

Public Enum LightStatus
    Unknown
    TurnedOn
    TurnedOff
End Enum

Comentários

O terceiro estado no modo ternário normalmente representa um valor não inicializado ou indeterminado.

Definir a ThreeState propriedade da coluna proprietária também define a ThreeState propriedade de cada célula na coluna e atualiza a exibição da coluna. Para substituir o valor especificado para células individuais, defina os valores da célula depois de definir o valor da coluna.

Ao contrário da propriedade de coluna ThreeState , a propriedade da célula ThreeState não atualiza automaticamente a NullValue propriedade do estilo de célula associado quando você altera seu valor. Quando você alterar o valor da propriedade da célula ThreeState para, certifique-se de definir a NullValue propriedade do objeto retornado pela Style propriedade como Indeterminatetrue. Quando você alterar o valor da ThreeState propriedade para false, certifique-se de definir a NullValue propriedade como false.

Aplica-se a

Confira também