<p>I've seen <a href="http://msdn.microsoft.com/en-us/library/7tas5c80.aspx" rel="nofollow noreferrer">How to: Host Controls in Windows Forms DataGridView Cells</a> which explains how to host a control for editing a cell in a DataGridView.  But how can I host a control for displaying a cell?</p>

<p>I need to display a file name and a button in the same cell.  Our UI designer is a graphic designer not a programmer, so I have to match the code to what he's drawn, whether it's possible - or wise - or not.  We're using VS2008 and writing in C# for .NET 3.5, if that makes a difference.</p>

<p>UPDATE: The 'net suggests creating a custom DataGridViewCell which hosts a panel as a first step; anyone done that?</p>

As per your "UPDATE", creating a custom
```
DataGridViewCell
```
is the way this is done. I've done it, and it doesn't require that much modification from the example code available from the MSDN. In my case, I needed a bunch of custom editing controls, so I ended up inheriting from
```
DataGridViewTextBoxCell
```
and
```
DataGridViewColumn
```
. I inserted into my class (the one inherited from
```
DataGridViewTextBoxCell
```
) a new custom control which implemented
```
IDataGridViewEditingControl
```
, and it all just worked.
I suppose that in your case, you could write a
```
PanelDataGridViewCell
```
which would contain a control
```
MyPanelControl
```
which would inherit from Panel and implement
```
IDataGridViewEditingControl
```
.