DataGridViewCheckBoxColumn::IndeterminateValue Property
Gets or sets the underlying value corresponding to an indeterminate or null cell value, which appears as a disabled checkbox.
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
public: [TypeConverterAttribute((StringConverter^::typeid))] property Object^ IndeterminateValue { Object^ get(); void set(Object^ value); }
Property Value
Type: System::Object^An Object representing a value that the cells in this column will treat as an indeterminate value. The default is null.
| Exception | Condition |
|---|---|
| InvalidOperationException | The value of the CellTemplate property is null. |
The FalseValue, TrueValue, and IndeterminateValue properties determine the associated values of these states as they occur in the underlying data source.
Getting or setting this property gets or sets the IndeterminateValue property of the cell object returned by the CellTemplate property. Setting this property also sets the IndeterminateValue 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.
The following code example uses a DataGridViewCheckBoxColumn to track the status of office lighting. 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()); }
Available since 2.0