<p>I have a form containing a web browser control. This browser control will load some HTML from disk and display it. I want to be able to have a button in the HTML access C# code in my form. </p>

<p>For example, a button in the HTML might call the Close() method on the form.</p>

<p>Target platform: C# and Windows Forms (any version)</p>

This is possible, but I haven't done it in .NET.
A few years back I had a C++ application that hosted a web browser control (ActiveX).  From the HTML in the control, it was possible to call 'out' to the ActiveX control and get it to do things.
The same should be possible in .NET, although HTML DOM/JavaScript won't know about C#.  But if you wrap your .NET functionality in a COM object, you should be able to call methods on the COM/ActiveX objects which will in-turn call your C# code.
Hope this helps.