例如:在另一个问题中,我问是否有可能去除组合框上的边框;这是我认为应该内置在控件中的东西,但可惜的是我必须自己构建控件以进行这个简单的更改。
我是不是对C#/.net太新了,或者我的期望值过高?我知道SO喜欢C#,所以不要因为我的感受而咬我的头,只是帮我理解我缺失了什么,以及是否应该继续学习和使用C#。
今天我花了4个多小时去追踪C++程序中的8字节内存泄漏问题。这涉及到线程,并且附加调试器会改变线程定时,因此我甚至不能简单地在第N次分配上中断以查看泄漏位置。此外,我知道通常在哪两个事件之间分配了内存。不幸的是,两个线程都认为这是一个很好的时间来大量分配8字节大小的对象。在调查的最后,我发现COM指针的引用计数错误导致了内存泄漏。
如果您想避免为此类调查而抓狂,那就应该转向C#。
我认为你真正想表达的是:
.NET上的Windows Forms增加了我的开发时间 - 我是不是漏掉了什么?
我认为你确实漏掉了几个方面:
对于任何新技术而言,一开始都有相当大的学习曲线,有些比其他技术更难掌握。但是随着您获得更多的经验,您会发现这些东西变得更加容易。C#具有很强的.Net架构支持,可以从中受益,但是需要花费时间才能真正欣赏它的优势。C#也在不断地变化和发展,以允许新的编码风格(较新版本包含了很多函数式编程的影响),使其既时尚又强大。坚持下去并继续学习。
听起来你刚接触这个。问题不在于C#,而是.net框架。如果你使用VB.net,例如,你可能会遇到同样的问题。
当我从经典ASP转到ASP.net时,我也遇到了这个问题。大约半年左右,我感觉ASP.net中想做的事情在经典ASP中要容易得多。最终,这种感觉消失了。现在我再次尝试学习ASP.net MVC时,又遇到了这个问题。在ASP.net中可以在5分钟内完成的事情,在ASP.net MVC中需要花费几天时间才能弄清楚。
在你的情况下,听起来你正在使用Windows表单。以前你是否使用过WinForms(即VB6)?如果你想更好地控制样式,你可能需要看看WPF。
您不是第一个也不是最后一个有这种感觉的开发者。在我需要完成一项演示之外的任务时,似乎总是要花费数小时来尝试解决一个小问题。其中很多挫败感来自于ASP.NET Web控件。
话虽如此,我发现一旦克服了控件开发的(陡峭)学习曲线,许多挫败感都得到了解决。我觉得使用继承和重写虚拟成员来创建新行为是一种非常干净的方法。此外,它还可以创建非常容易重用的输出。对我来说,使用面向对象的实践总是比在各个地方粘贴JavaScript代码片段更好。
微软做得很好,提供了许多基本控件供开箱即用,但每个应用程序似乎总需要缺少的东西。我建议学习控件开发,或者尽可能寻找第三方解决方案。有许多公司存在的唯一目的就是填补这些空白。无论哪种方式,我不会根据默认控件集来评判整个语言。
你是否在尝试做一些不太常见的事情?大多数GUI开发人员都会遵循某种人机界面指南,以便他们的应用程序与所使用的操作系统的窗口管理器相适应。这有助于提高用户体验。大多数GUI元素都是根据这个原则设计的。因此,你可能正在尝试使你的界面与大多数界面截然不同,因此,你发现必须进行一些自定义工作。这是正常的。
这取决于你来自哪里。我发现C#非常有效。
我很少使用其他控件,因为它们通常不能完全满足我的用例,并且会在您的应用程序上创建依赖关系。
所以当你想要升级你的项目到C# 4,但是由于控件X、Y和Z在C# 4中不起作用...你就束手无策了。
所以我只是提前承担一些代价,编写自己的控件,这样以后就会少些烦恼。