我正在尝试学习Windows.Forms,虽然我有Visual Studio(编辑,显然是我的错误),但我觉得通过在记事本中做所有事情我可以更有效地学习。我到处搜索了一个采用这种方法的教程。我终于开始使用http://www.geekpedia.com/tutorial33_Windows-forms-programming.html了,但在第一个例子之后,它也开始使用多个文件了?以某种方式使用Visual Studio生成。我怎么能在记事本中这样做?有人能指点我帮忙吗?
谢谢!
**虽然压倒性的反应看起来似乎强烈反对,但我开始被说服,我看到SmokingRope谈论它就像把所有类写成一个文件一样简单。这是我迄今为止所做的大型非Windows.Form项目。您可以帮助解释如何使用此方法包含这些必要的文件吗?*
答案 0 :(得分:25)
说真的......我很佩服你的火,但你不在乎!你可能希望通过NotePad了解.NET,你用Visual Studio学习的速度要快几倍吗?这就像是在问:“我想学开车。我把轮子放在沙发上。接下来我该怎么办?”
我的意思是没有不尊重,但与Visual Studio交朋友,忙着学习。否则你会浪费你的时间。
答案 1 :(得分:9)
在IDE之外编写 C#实际上非常容易。它基本上归结为从命令行提示符使用 csc.exe 编译器。
此过程中最难的部分是确保正确配置环境变量,Microsoft提供 vsvars32.bat 批处理文件来完成此操作。
这是一个简短的教程,介绍如何从命令行使用此批处理文件和编译器:http://www.zeusedit.com/forum/viewtopic.php?t=1235
更好但更复杂的方法是使用 MsBuild 实用程序来管理项目的构建:http://www.zeusedit.com/forum/viewtopic.php?t=2518
最后,您甚至可以使用外部 C#Debugger 来调试程序:http://www.zeusedit.com/forum/viewtopic.php?t=2507
答案 2 :(得分:4)
您最好的方法是学习如何在Visual Studio中编写代码。您可以获得大量的编码帮助(智能感知,语法检查等),这将有助于您学习语言。
如果您真的想使用记事本,那么您可以根据需要创建少量或多个文件,然后使用命令行编译器将它们编译为汇编,方法是将每个文件列为编译器的输入。
现实情况是使用记事本和命令行编译器是可能的,但非常麻烦,几乎从不在显示简单的“Hello,world”类型示例之外使用。
答案 3 :(得分:4)
我在这里反对......但我认为你的想法并不是那么糟糕......特别是对于一个小项目。
但是使用记事本(或者至少使用Notepad ++)会教你更多关于MSBuild和VBC或CSC编译器的语法,而不是教你语言功能。正如其他人所说,学习语言的最佳方式是使用Visual Studio。 intellisense是一种很好的学习方式。
但它也让我们变得懒惰,而且我们不必记住那么多......而且有时候记住的东西会派上用场。 (即......我是客户并远程登录到服务器......没有安装视觉工作室......但是... yippee ... .NET 2就在那里......那时候你会赞赏这次演习......)
老实说,为了一个相当小的项目,我认为这将是一个很好的学习练习。我说去吧。天啊,我甚至可能会加入你。
但是,那就是说,我认为最好的方法就是并排使用这两种方法。例如......如果你想使用多个文件,那么这样做的方法是创建一个文件夹并在其中放入一个vbproj(或csproj)文件。 MSBuild.exe接收vbproj文件(以及相关的sln文件)作为参数。因此,学习vbproj文件语法的最快方法之一是使用visual studio创建项目...然后在Notepad ++中打开vbproj文件。
问题是Visual Studio真是太棒了,因为它从开发人员那里抽象了很多东西。但不承认存在不利因素是愚蠢的。这种抽象意味着我们不需要那么深刻的理解。事情就是自动完成的。所以我说要深入挖掘一下。我认为你不会后悔。
答案 4 :(得分:2)
您可以在一个C#文件中编写多个类(尽管普遍接受的最佳做法是每个文件放一个类):
using System;
namespace Test{
class Class1{ }
class Class2{ }
}
您还可以从命令行了解MSBuild系统的工作原理。我相信你仍然需要维护一个项目文件(xml类型语法,使用visual studio创建一个项目,然后在记事本中打开它作为一个例子),但我个人没有任何经验。
可以从记事本和命令提示符完成所有操作。然而,你可能会发现它更耗时。
答案 5 :(得分:1)
如果你想学习c#和winforms,你需要的部分技能是精通Visual Studio。
你可以在记事本中做一段时间(我在记事本中写过一些因为我没有VS可用的web服务),但最终你会想要利用VS中可用的工具。
答案 6 :(得分:1)
我强烈建议您使用Visual Studio(Microsoft提供可满足您需求的免费Express版本)。学习语言的语法很棒,但是你必须能够在VS环境中工作才能真正成功地使用C#(以及任何.NET语言)。它可以让你更好地做到正确并一起学习,而不是试着将它拼凑起来。只是我自己的两分钱。
答案 7 :(得分:1)
假设你要避免的东西是神奇生成的代码和可视化设计器,你可以打开System.Windows.Forms命名空间并开始编写API代码。从第一个示例开始,然后以编程方式添加按钮和文本框等等。您不必创建表单项目或与设计人员合作,您只需在VS中“编写代码”并关闭所有魔法。
如果您正在寻找示例代码,您可以考虑查看F#示例,例如
中的UI内容http://code.msdn.microsoft.com/fsharpsamples
有关一些基本控件的想法,您可以添加到表单来执行基本的UI工作。
答案 8 :(得分:1)
只是为了重复已经说过的话,再一次没有不尊重,你不会在记事本中学习.NET。这不是可能的。您不仅 没有效率,而且 还不会学习行业中使用的工具,最佳实践以及有关.NET的其他重要因素。这不仅仅是坐下来编写代码。通过将自己限制在记事本中,就像限制自己每月吃一顿饭一样:缺乏必要的营养以保持良好的步伐前进。
利用您可以使用的工具和资源。像这样限制自己是后端的一脚。
答案 9 :(得分:1)
使用sharpdevelop(Windows)或monodevelop(* nix)。两者都有Windows.Form支持。虽然他们不提供与VS一样多的东西,但他们至少会让你开始。我从未使用过VS Express版本,因此我不知道它的局限性。
答案 10 :(得分:0)
下载Visual Studio的Express版本。我理解通过记事本彻底了解这一点的可能性,但是在那里使用免费的IDE,这没有任何意义。
答案 11 :(得分:0)
如果你有针对MS或VS.net的东西,你可以尝试sharpdevelop http://www.icsharpcode.net/OpenSource/SD/
上次我看起来是xcopy deployable:)
答案 12 :(得分:0)
我不知道在哪里可以找到教程,但方法非常简单:导入System.Windows.Forms,从Form派生一个类,并给它一个.Show()。您的组件是类的成员,可以使用各自的位置/大小属性进行定位。事件由代表处理。
我确实看到了这种技术的用处,尽管我使用了一个不错的IDE而不是Notepad。 .NET太多了。知道如何动态构建表单可以派上用场。
如果您正在寻找备用IDE,请查看icSharpCode的SharpDevelop。
另外,查看JScript.NET教程 - 该语言没有表单编辑器,因为继承是不可能的。但它仍然基于.NET,因此基本动作是相同的。这是一个体面的:
答案 13 :(得分:0)
我知道这是奇怪的回答我没有看到有人谈论过NAnt。
多年来,我在TextPad中开发了一些语法高亮,+ NAnt来做我的构建。这些天你会更容易,因为你可以让你的构建服务器为你准备一个合适的msbuild(CC.NET + NAnt)。
我还了解了一些在Visual Studio中实际上无法做到的事情(当时它是.net 1.1)。绝对是一个很好的经历,我真的推荐它。可能不适合winforms,因为设计师 实际上对此有用。
答案 14 :(得分:0)
请注意,记事本甚至不等于vi,更不用说vim了。
如果您想使用文本编辑器,那么您可以尝试一下,但我没有看到使用记事本的重点。使用真正的文本编辑器,不一定是vim / emacs,你可以选择一个很好的gui文本编辑器,如notepad ++或kate。
记事本甚至无法显示unix行结尾(我认为)。
答案 15 :(得分:0)
不使用记事本会有所帮助。 Crimson Editor或TextPad或其他人都有行编号,语法高亮和许多你需要的功能。我确定记事本有可能遇到的文件大小限制。
sans-IDE元素我只能从Java的角度来完全回答。我有时使用Crimson Editor,Java SDK,批处理文件和/或ANT或Maven进行了大量的Java UI开发。如果你开发的UI代码是通用的,或者动态地做了相当数量的UI代码,那么就可以了。如果您的工作涉及设计许多不同的特定表单(即具有许多客户表单且不会过多重用的屏幕),那么IDE的Designer功能非常有用。
但是,我发现.NET IDE开发有点令人沮丧,来自上面的Java开发模型。