This can also be achieved on the CheckListBox but you have to set the indeterminate state yourself, from MSDN:
The CheckedListBox object supports three states through the CheckState enumeration: Checked, Indeterminate, and Unchecked. You must set the state of Indeterminate in the code because the user interface for a CheckedListBox does not provide a mechanism to do so.
There is also a code example:
// Adds the string if the text box has data in it.
private void button1_Click(object sender, System.EventArgs e)
{
if(textBox1.Text != "")
{
if(checkedListBox1.CheckedItems.Contains(textBox1.Text)== false)
checkedListBox1.Items.Add(textBox1.Text,CheckState.Checked); // here you can set CheckState.Indeterminate!
textBox1.Text = "";
}
}
for reference: http://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox%28v=vs.110%29.aspx