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

屬性值

Boolean

如果裝載的 DataGridViewCheckBoxCell 物件能夠擁有第三個不定狀態,則為 true,否則為 falsetrue if the hosted DataGridViewCheckBoxCell objects are able to have a third, indeterminate, state; otherwise, false. 預設為 falseThe default is false.

例外狀況

CellTemplate 屬性的值是 nullThe value of the CellTemplate property is null.

範例

下列程式碼範例會使用 DataGridViewCheckBoxColumn 來追蹤辦公室光源的狀態。The following code example uses a DataGridViewCheckBoxColumn to track the status of office lighting. 屬性會將 FalseValue "turnedOff" 關聯 false 至, TrueValue 屬性會將 "turnedOn" 與關聯 true ,而屬性會將「未知」 IndeterminateValue 關聯至不定。The 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 屬性所傳回之資料格物件的屬性 CellTemplateGetting 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.

如果 NullValue 屬性所傳回之物件的屬性 DefaultCellStyle 具有值 false ,請將 ThreeState 屬性值變更為 true 自動設定 NullValueIndeterminateIf 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 值為 Indeterminate ,則將 ThreeState 屬性值變更為 false 自動設定 NullValuefalseIf NullValue has a value of Indeterminate, changing the ThreeState property value to false automatically sets NullValue to false.

適用於

另請參閱