Is it possible to add a canvas into a listbox?
No, but all the individual cells give you access to a Graphics object for drawing. Look at ListBox.CellBackgroundPaint and ListBox.CellTextPaint.
Does the event mentioned above applies to the Header as well?
If so, how should the code look like?
No, you cannot alter the look of the ListBox header.
Instead you might try turning off the ListBox header and simulating your own with a separate Canvas.