A while ago, I helped write an article for the InfoPath team on how to write InfoPath Custom Controls using C#.

http://blogs.msdn.com/infopath/archive/2005/04/15/408728.aspx

Warning, there isn't really full support for C# Controls in InfoPath, so beware, you might need to write workarounds. The supported languages are VB6 written controls and C++ ones.