There are several libraries that you can use. IDWMaster mentioned OpenTK, which is one option (OpenGL, so your mileage may vary, I'm not a big fan).
If you want to use DirectX, as you noted the question, there are several more options. Microsoft was offering "DirectX Managed," which is deprecated in favor of XNA. SlimDX is a more modern shell for DirectX libraries, displaying most of their functionality (but it has some performance). SharpDX , which I suppose should be slightly faster than SlimDX, but I haven't used it.
You can also use some of the DirectX API directly using COM interoperability. C # and .Net support pretty good interactions with COM components, including native ones. You will have to handle a significant amount of IntPtr and you may have to do manual marshaling, but IDirect3DDevice does not have too many methods that can cause problems (IIRC).
source share