views:

863

answers:

15

I am trying to learn Windows.Forms, and while I have Visual Studio (edit, my mistake obviously), I feel that I learn much more effectively by doing everything in Notepad. I have searched everywhere for a tutorial that takes this approach. I finally got started with http://www.geekpedia.com/tutorial33_Windows-forms-programming.html, but after the first example, it too begins working with multiple files? somehow generated with Visual Studio. How can I do this in Notepad? Can anyone point me somewhere helpful?

Thanks!

*While the overwhelming response seems seems strongly against this and I started to be convinced, I saw SmokingRope talking about it being as simple as writing all classes into one file. This is what I have been doing up till now for sizable, just non Windows.Form projects into. Can you maybe help explain how those necessary files can be included using this method?

+4  A: 

Your best approach is really to learn how to write code from within Visual Studio. You gain a lot of coding assistance (IntelliSense, syntax checking, etc.) that will help you learn the language.

If you really want to use Notepad, then you create as few or as many files as you want and then compile them in to an assembly using the command line compiler by listing each file as an input to the compiler.

The reality of this is that using notepad and the command line compiler is possible but very cumbersome and almost never used outside of showing simple "Hello, world" type examples.

Scott Dorman
+19  A: 

Seriously... I admire your fire, but you are out of your mind! What you can possibly hope to learn about .NET with NotePad that you couldn't learn a zillion times faster with Visual Studio? It's like asking, "I want to learn to drive a car. I have put wheels on my couch. What should I do next?"

I mean no disrespect, but make friends with Visual Studio and get busy learning. You're wasting your time otherwise.

rp
"faster with .NET" should be "Visual Studio" I think? doesn't quite make sense lol. But yea, you and Scott say good things. :)
Zack
This reminds me of every time a new feature is released, people bag it saying no one would use that etc. As Linux IDE's are just so terrible the only argument they have is "you aren't a real programmer unless you use VIM". The only thing my employer cares about is how quickly I can complete my task. I spend less time fighting with the language and more time on the code :)
Spence
Thanks, Zack--got it fixed.
rp
In IDE some things might get unnoticed that are crucial for the application to run. (Like auto generated code) If you type them in notepad you have no chance not to notice them. For example I know many people developing happily with Silverlight doesn't have any idea about what InitializeComponent() is doing behind the scene.
Tanmoy
A: 

Go download an Express edition of Visual Studio. I understand the possibility of thoroughly learning this via notepad, but with a free IDE out there, it makes no sense.

routeNpingme
+2  A: 

If you want to learn c# and winforms, part of the skill set you need is being proficient in Visual Studio.

You can do things in Notepad for awhile (I wrote some web services in notepad once because I didn't have VS available), but eventually you will want to take advantage of the tools available in VS.

Robert Harvey
+1  A: 

I highly recommend you use Visual Studio (Microsoft offers free Express versions that will meet your needs). Learning the syntax of the language is wonderful, but you must be able to work within the VS environment to be truly successful in C# (and any of the .NET languages). It benefits you more to do it right and learn it all together rather than try and piece it together later. Just my own two cents.

Matt Dewey
+1  A: 

Assuming that the thing you want to avoid is magically-generated-code and visual designers, you can just open the System.Windows.Forms namespace and start coding against the APIs. Start with that first example, and then programmatically add buttons and textboxes and whatnot. You don't have to create a forms project or work with the designers, you can just 'write code' in VS and turn off all the magic.

If you're looking for example code, you might consider looking at F# samples, e.g. the UI stuff at

http://code.msdn.microsoft.com/fsharpsamples

for ideas of a few basic controls you can add to forms to do basic UI stuff.

Brian
A: 

if u have something against MS or VS.net u can try sharpdevelop http://www.icsharpcode.net/OpenSource/SD/

last time i looked it was xcopy deployable :)

Simon
+1  A: 

Just to repeat what's already said, again with no disrespect, you are not going to learn .NET in notepad. It's just not probable. Not only are you not be productive, but you're also not going to learn the tools used in the industry, best practices, and other important factors about .NET. It's not just about sitting down and writing code. By limiting yourself to notepad, it's like limiting yourself to one meal a month: you lack the nutrition needed to keep moving forward at a good pace.

Utilize the tools and resources available to you. Limiting yourself like that is a kick in the rear end.

David Anderson
+1  A: 

You can write multiple classes in a single C# file (despite the generally accepted best-practice of putting one class per file):

using System;
namespace Test{
  class Class1{ }
  class Class2{ }
}

You also could look into how the MSBuild system works from the commandline. I believe you will still have to maintain a project file (xml type syntax, use visual studio to create a project and then open that in notepad for an example) but i don't have any experience with it personally.

It's possible to do it all from notepad and the command prompt. You will probably find it to be a little more time consuming however.

SmokingRope
+3  A: 

It is actually quite easy to code C# outside of the IDE. It will basically come down to using the csc.exe compiler from the command line prompt.

The hardest part of this process is making sure the environment variables are correctly configure and Microsoft provides the vsvars32.bat batch file to do exactly that.

Here is a short tutorial on how to do use this batch file and the compiler from the command line: http://www.zeusedit.com/forum/viewtopic.php?t=1235

And an even better, but slightly more complicate approach is to use MsBuild utility to manage the building of the project: http://www.zeusedit.com/forum/viewtopic.php?t=2518

Finally you can even use the external C# Debugger to debug you programs: http://www.zeusedit.com/forum/viewtopic.php?t=2507

jussij
You can also make nails out of old welding rods--thereby spending all of your time making nails. Or, you could buy a sack of nails and start building something!
rp
+1  A: 

Use sharpdevelop (Windows) or monodevelop (*nix). Both have Windows.Form support. Although they dont offer as much as VS, they'll at least get you started. I've never used the VS Express edition, so I don't know what it's limitations are.

Jim Schubert
A: 

I don't know where to find tutorials, but the approach is pretty straightforward: import System.Windows.Forms, derive a class from Form, and give it a .Show(). Your components are members of the class, and can be positioned using their respective position/size properties. Events are handled through delegates.

I do see where this technique is useful, though I'd use a decent IDE instead of Notepad. .NET is just too prolific. Knowing how to construct forms on the fly can come in handy.

If you're looking for an alternate IDE, check out icSharpCode's SharpDevelop.

Also, look into JScript.NET tutorials - there is no forms editor for that language, as inheritance simply isn't possible. But it's still based on .NET, so the basic motions are the same. Here's a decent one:

http://www.webreference.com/js/column117/

Barry Burns
+1  A: 

Nona,

I am going against the grain here...but I think that your idea is not such a bad one...especially for a small project.

But using Notepad (or at LEAST use Notepad++) will teach you more about MSBuild and the VBC or CSC compiler syntax than it will teach you about the language features. The best way to learn the language, is, as other have said, using Visual Studio. The intellisense is a great way to learn.

But it also makes us lazy and it is true that we don't have to memorize as much...and sometimes having things memorized comes in handy. (ie....I am at a customer and logged in remotely to the servers...no visual studio is installed..BUT...yippee....NET 2 is there...at that moment you will have appreciated the exercise...)

Honestly, to do this for a reasonably small project I think would be a good exercise in learning. I say go for it. Hell, I might even join you.

But, that said, I think the very best way to do it would be to use both mehtods side-by-side. For example...if you want to use multiple files the way to do that is to create a folder and put an vbproj (or csproj) file in it. MSBuild.exe recieves vbproj files (and sln files for that matter) as arguments. So, one of the quickest ways to learn the vbproj file syntax is to use visual studio to create a project....and then open the vbproj file in Notepad++.

The problem is that Visual Studio IS SO AWESOME BECAUSE it abstracts so much away from the developer. But it is silly to not acknowledge there is a downside to that. That abstraction means that we don't need to have as deep an understanding. Things just work automagically. So I say dig a little deeper. I don't think you will regret it.

Seth

Seth Spearman
Just to clarify...vbproj and csproj files are NOT the only way to use multiple files. I am pretty sure that the compilers themselves (vbc.exe and csc.exe) will recieve multiple files as command arguments. Seth
Seth Spearman
A: 

I know this is answered by strangely I haven't seen anyone talk about NAnt.

For years I developed in TextPad, with some syntax highlighting, + NAnt to do my builds. These days it'd be even easier as you can have your buildserver prep a proper msbuild for you (CC.NET + NAnt).

I also learned about a few things that physically couldn't do in Visual Studio (at the time it was .net 1.1). Definitely a good experience, and I'd recommend it really. Probably not for winforms though, because the designer is actually useful for that.

Noon Silk
silky,What do you mean that NANT or cc.net can "prep an msbuild server?" You have my curiosity. Are you saying they can actually create the proj files on the fly based on other metadata?
Seth Spearman
You can use NAnt to call MSBuild to do the build from your project files.
Noon Silk
A: 

Sorry to hijack this thread, but I'm doing the same (writing in notepad, compiling via csc.exe). But I've got a question: how do you make resource files?

There's enough info on the Internet about ADDING resource files to your executable, but I can't find anything about CREATING them..