Question: The `Items` property of a checked list box control in Windows forms is of type object, so my naive hope was that I can add a customized User control as item. (Since, usually, my task is to write logic for background tasks I'm not too familiar with UI programming, so this may be a stupid idea..)

More precisely I want to display two labels and a button in each line of the the checked list box. The first label is supposed to display the name of an object the user can select (so that later on a specific operation will be performed on all checked items). For any item checked, the button is supposed to allow the user to choose a file from which custom settings can be read for performing that operation and the second label should display the choice the user has made using the button (i.e. the file name or something like the string "default settings").

So, in the forms designer, I created a custom control `CustomControl1` with `label1`, `label2`, `button1`, and methods to set the text properties, set autosize of the labels and the button to false, defined their size manually. Then in the main window I created the checked list box, to which I added custom controls. The constructor of my main window now looks as follows:

```
        InitializeComponent();

        UserControl1 uc1 = new UserControl1();
        uc1.setLabel1("label1_text");
        uc1.setLabel2("label2_text");
        uc1.setButtonText("button_text");

        this.checkedListBox1.Items.Add(uc1);

        uc1.Visible = true;

```

This compiles without any error and also runs, but the checked list box shows an empty field. I also experimented with the size of the list box. If I reduce the height so that the check box just fits into it then I do see fragments of the button in the corresponding line, but no label. 

Is it possible to use a custom form in a checked list box and if yes, what am I missing?

Answer: 
No, you can't do this.

The listbox only shows a list of elements. The listbox uses the property `.ToString()` for each objects in the list to show the items.

You need to look for a [custom listbox](https://www.google.com/search?q=custom%20listbox&oq=custom%20listbox&aqs=chrome..69i57j0l5.2082j0j7&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8#es_sm=93&espv=210&q=custom%20listbox%20winforms)
```
private void Form1_Load(object sender,EventArgs e)
    {
        checkedListBox1.Items.Add("IIT");
        checkedListBox1.Items.Add("CSE");
        checkedListBox1.Items.Add("EEE");
        checkedListBox1.Items.Add("ICT");
        checkedListBox1.Items.Add("URP");
        checkedListBox1.Items.Add("ENGLISH");
        checkedListBox1.Items.Add("BANGLA");
        checkedListBox1.Items.Add("MATH");
    }
    private void checkedListBox1_SelectedIndexChanged(object sender,EventArgs e)
    {
        //var item=checkedListBox1.SelectedItem;

        label1.Text=checkedListBox1.SelectedItem.ToString();
    }

```