I was thinking of using the Visual C# Windows Forms designer to design the UI leaving me to focus on the program functions and logic. (I used to make the UI By hand earlier). So does using the Designer instead of coding the UI By hand cause any extra overhead? (Also will this make my code incompatible with MONO?)
OVERHEAD: Any extra memory , extra startup time, decrease in efficiency and performance.
The only thing that happens when you are using a designer, is that the initialization of items on the form will be generated for you (InitializeComponent method) in .designer.cs file. This should not affect performance in any way and it happens only when the form is constructed.
So unless you have some specific needs or layout calculations, I would not do it by hand but I would use the designer. It’s quick, and visual. And you can see the form layout without needing to compile and run the application.
I had some experience in creating some layout logic by hand, but I needed dynamically created controls (the amount of controls unknown at design-time). Other than that I don’t see why you wouldn’t use the Designer.
As for the MONO part, I don’t think it would be incompatible. The designer simply generates the code, nothing else. I am not aware of the full list of the MONO features, but since code generation siply uses layout logic and some other properties of the control – I don’t see how would MONO fail to do the same. But I have no real experience with Mono, so someone should confirm.
Edit:
There is also a scenario in which the initialization of certain controls (especially if custom controls) must be initialized in the certain order. Then you can’t rely on initialization of these controls by the designer. However, you can still use the Designer for all other controls in which the order does not matter.