ich würde einen eigenen Zellentyp schreiben.
Am einfachsten ist es, von
DataGridViewCell abzuleiten und dann die benötigten Methoden/Properties/Attribute hinzuzufügen. In deinem Fall wäre das erstmal eine Listbox.
Dann musst du die
Paint-Methode der Zelle überschreiben und zusätzlich zur Basismethode noch die Listbox rendern, die ja auch eine Paint-Methode besitzt. Dort übergibst du einfach den Grafikkontext der Zelle und setzt eventuell die Bounding-Box der Listbox neu.
Darüber hinaus kannst du, je nachdem was du brauchst ebenfalls die
OnClick oder
OnDoubleKlick-Methoden überarbeiten und bestimmte Aktionen an deine Listbox weitergeben.