DataGridViewCheckBoxColumn.ThreeState Свойство

Определение

Получает или задает значение, указывающее, допускают ли размещенные ячейки флажков три контрольных состояния, а не два.Gets or sets a value indicating whether the hosted check box cells will allow three check states rather than two.

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

Значение свойства

Значение true, если размещенные объекты DataGridViewCheckBoxCell могут иметь третье, неопределенное состояние; в противном случае — значение false.true if the hosted DataGridViewCheckBoxCell objects are able to have a third, indeterminate, state; otherwise, false. Значение по умолчанию — false.The default is false.

Исключения

Значение свойства CellTemplate равно null.The value of the CellTemplate property is null.

Примеры

В следующем примере кода используется DataGridViewCheckBoxColumn для отслеживания состояния освещения офисов.The following code example uses a DataGridViewCheckBoxColumn to track the status of office lighting. false TrueValue trueСвойство связывает "турнедофф" с, свойствоIndeterminateValue связывает "турнедон" с, а свойство связывает "Unknown" с неопределенным. FalseValueThe FalseValue property associates "turnedOff" with false, the TrueValue property associates "turnedOn" with true, and the IndeterminateValue property associates "unknown" to indeterminate.

#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

Комментарии

Неопределенное состояние может быть полезным, например, если не нужно задавать значение по умолчанию в флажке.The indeterminate state can be useful, for example, when you do not want to set a default value in the check box.

Получение или задание этого свойства Возвращает или задает ThreeState свойство объекта ячейки CellTemplate , возвращаемого свойством.Getting or setting this property gets or sets the ThreeState property of the cell object returned by the CellTemplate property. Задание этого свойства также устанавливает ThreeState свойство каждой ячейки в столбце и обновляет отображение столбца.Setting this property also sets the ThreeState property of every cell in the column and refreshes the column display. Чтобы переопределить указанное значение для отдельных ячеек, задайте значения ячеек после установки значения столбца.To override the specified value for individual cells, set the cell values after you set the column value.

ThreeState Indeterminate true NullValue Если свойство объекта, возвращаемого DefaultCellStyle falseсвойством, имеет значение, то при изменении значения свойства на автоматически устанавливается значение. NullValueIf the NullValue property of the object returned by the DefaultCellStyle property has a value of false, changing the ThreeState property value to true automatically sets NullValue to Indeterminate. Если NullValue false false NullValue параметр имеет значение ThreeState , то при изменении значения свойства на автоматически устанавливается значение. IndeterminateIf NullValue has a value of Indeterminate, changing the ThreeState property value to false automatically sets NullValue to false.

Применяется к

Дополнительно