Help Me Getting Started With C# Tool Programming

Started by
2 comments, last by tharealjohn 10 years, 5 months ago

I don't know where to start and I cannot use another language. I want to learn C# for tool programming to land an internship next summer.

This internship would require me to know how to make simple GUI tools with C#.

Where should I start? I know C/C++, Java, PHP, so learning a new language isn't a big deal. I also know about game development and graphics programming, so I'm not a complete beginner.

The problem is that with C#, I can choose from Winforms, WPF, and a few other alternatives. There are pros and cons to each, but I just want to make simple tools. I would like to be able to create a clone of MS Paint for example. So what do you guys recommend I do?

Is there a good book on C# GUI programming? Which library should I use?

Remember that I have to make professional looking tools and professional looking code to land that internship. I would ideally like to use the C# library that is most ubiquitous for tool programming in the game development industry.

Advertisement

WinForms is the easiest for windows desktop apps in my opinion. The only reason to use WPF is if you want to use XAML (it's disgusting in my opinion). The only reason NOT to use WinForms is if you want your app to run without mono-related bugs on Linux/Mac (the mono implementation of WinForms is extremely buggy).

If you're applying to a tools position with a game development company, you should also learn how to write in-editor scripts for Unity, since teams using Unity would prefer their tools to be included inside the Unity interface.

Game development companies that use desktop C# apps usually don't care so much about what the interface looks like - just a standard boring Windows interface is fine as long as it does what they need it to. WinForms excels at making standard boring Windows interfaces, and you can customize it to look shiny and fancy if you really want/need to. The biggest thing you'll have to worry about with a WinForms tool is likely undo/redo support or possibly integration with source control systems. You may also want to make sure you know how to interop with C++/CLI and C libraries from C#.

This is exactly what I wanted to hear. Now, do you have any books you recommend on the subject?

I'm also interested in learning good programming practices and coding standards.

Since Nypyren weighed on WinForms, I'll comment on WPF since that is what I prefer over WinForms.

You wouldn't just use WPF because you "want" to use XAML. WPF has a number of benefits over WinForms besides its markup language. XAML is a powerful language for writing code to make a user interface. It [WPF] also introduces many newer design paradigms that you should learn in this day and age, specifically the MVVM pattern. It's not required, but the separation of the GUI and business logic in WPF is easier then in WinForms. That is a really powerful thing to use/know/understand. Data Binding in WPF is a really awesome technology that makes the whole thing worth it in my opinion. WinForms feels old and clunky after using WPF for a while.

Also, XAML is used in Windows Phone programming, which might translate nicely in the future if you need that sort of thing. Android uses an XML language for GUI programming too, which coming from a WPF background, this was easier for me to pickup and understand.

You can use WPF just like you would WinForms. You can start with the drag and drop interface and then code your controls in the "code-behind" file. I personally don't know of a reason to use WinForms anymore (there are probably some, I just never had the need to research it because WPF has solved all my issues).

The WPF Unleashed books are a great series, but I would recommend you start with some general C# books first. Something like this would be helpful to work through.

When things get more advanced, you can also customize the visual appearance of your program using Blend for a nice look, although you probably wont need that for tooling, but its handy to learn.

Hope that gives you some insight on the other end of the stick. Either way though, you can't go wrong with either technology. As long as you understand C# and the tool works well, I think that is what matters.

jmillerdev.com

Follow me @jmillerdev

This topic is closed to new replies.

Advertisement