I thought I'd canvas the more experienced .NET (mostly CSharp/ASP.NET) Developers on the most useful general components. I've got about $5-$7k to spend as I want on components as part of a project which involves web based graphs/reports/data visualisation, but I want to get things that will be useful for general purpose the board while the cash is there to be had! My current thoughts are as follows, any opinions welcome:
Dundas Chart (already bought, I've had great experiences using it)
Telerik .NET
DevExpress DXperience (a bit of a dupe against the Telerik components but I figure if one has a strange bug or limitation you have the other as a fallback). Both seem very comprehensive.
Was considering a diagram type control like godiagram- it doesn't look visually amazing like the old Corgent/Dundas diagram did, but I can't find a better one presently. If anyone knows a nice one that does anti-aliasing and suits workflow type diagrams, let me know!
Considering a Telerik SiteFinity license, it looks quite good but not sure how well it'll combine with non-cms type pages, so the jury is out.
Any glaring omissions? Thanks all!
I have purchased the DevExpress and Telerik libraries and, while both are good, I ended up removing Telerik altogether and sticking with DevExpress for some pretty concrete reasons.
First, there is a great deal of overlap between the two and the two of them really share the leadership position in the ASP.NET/C# market.
DevExpress has a significant advantage with respect to their reporting tool. No tool I evaluated was perfect (I looked at four altogether) but DevExpress was the easiest to get going with, the easiest to deploy and at least as powerful as any of the others (with the possible exception of the MS tool - but that has its own deployment problems). This was a big advantage as reporting is central to my app as well.
The DevExpress charting library is very nice and integrates well with the reporting tool - another win for them. Dundas and Telerik have nice libraries as well but, after years of doing charts, ease of setup/definition is important to me and DevExpress has the edge there.
Telerik has a better online HTML editor (we feature a CMS in our product) but the DevExpress product wasn't that far behind. If I was not doing reporting/charting, I might go with Telerik on this basis alone since our CMS is quite important but it isn't enough of an advantage if you are doing reporting/charting.
The Grid products from both are great but DevExpress also offers a PivotGrid that is a spectacular data analysis tool and a nice addition to any site where data analysis is important.
Both have very good support in my experience.
The generic controls from both are very capable but, honestly, there's little reason to choose either one over the other for the controls that I care about. My focus was on date-handling controls and numerical inputs.
So, I can absolutely see people being happy with either of the two but I ended up (after using both for about two years) going with just DevExpress. It didn't hurt that the DevExpress team also wrote a book that really helped flesh out the range of uses to which their library could be put.
Hope that helps!
Before spending money on controls you might use, you should figure out what you're doing and buy the ones you will use.
I like the asp.net chart controls, http://weblogs.asp.net/dwahlin/archive/2008/11/25/getting-started-with-the-asp-net-3-5-chart-control.aspx
but they're free.
I completely agree with #John Boker, but would also add that you consider broadening your search to include development tools which might make your team faster at code production/testing/validation.
Making your code easier to build and maintain wins out over having a wide variety of expensive component libraries in my experience, and this is mostly due to having very good free versions of the controls you are looking for, yet a relative dearth of decent free code production tools.
Development tools like ReSharper and dotTrace will be useful in writing efficient & maintainable code
I think Peter Blum's validator controls are great, and his data entry stuff is pretty nice too.
SQL Server reporting services (if you're using SQL Server) might help you lose the cost of a few of these. Also the no frills Google Chart API is cheap and a lot easier to integrate.
Related
I am looking people's opinion and experience on using chart controls within an ASP.NET application (web forms or MVC) primarily but also in any kind of project.
I am currently doing my research and I have a pretty big list of controls to evaluate. My list includes (in no particular order):
ASP.NET controls:
DevExpress XtraCharts (http://demos.devexpress.com/XtraChartsDemos/)
Dundas Chart for .NET (http://www.dundas.com/)
Telerik RadChart for ASP.NET AJAX (http://www.telerik.com/)
ComponentArt Charting & Visualization
for ASP.NET (http://www.componentart.com/)
Infragistics WebChart (http://www.infragistics.com/dotnet/netadvantage/aspnet.aspx#Overview)
.net Charting (http://www.dotnetcharting.com/)
Chart Control for .Net Framework
(Microsoft's) (http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx)
Flash controls:
FusionCharts v3 (http://www.fusioncharts.com/)
XML/SWF Charts (http://www.maani.us/xml_charts/index.php)
amCharts (http://www.amcharts.com/)
AnyChart (http://www.anychart.com/home/)
Javascript:
Flot (http://code.google.com/p/flot/)
Flotr (http://solutoire.com/flotr/)
jqPlot (http://www.jqplot.com/index.php)
(If I missed some that worth to be compared against the above please let me know.)
What I am looking is opinions on using any of the above so I can form my own and help others do the same, based on what I read here.
I do not care which one is better. What I care for is why someone likes one of the above and what do these controls offer as a distinct advantage. I am interested in developer's opinion and I would like to find out which things are difficult doing with any of the above controls and which things are easy to achieve.
AJAX compatibility (build in to the controls but also manual), ASP.NET compatibility, input capabilities, data binding options, performance, how much code does one need to write in order to create a chart, are some of the things that I would want to read about.
I have already done my research on StackOverflow for relevant questions but there is nothing on the level of detail that I would want to read in order to make a responsible decision.
I worked a little bit with Google charts and the .Net Chart Control (formerly Dundas Chart 5.5). I do not have an opinion about the other products you listed.
At the time (a year ago) there was no functioning .Net wrapper framework for Google Charts (at least I did not find one), and while the Google Charts Api is relatively simple, it is also very limited. I found the resulting code that composes the chart request to be inherently ugly and not very maintainable (not necessarily the fault of the API, I know - but it would have required a much larger investment to do it better). Here are some of the resulting charts. For instance, I was unable to find a way to align the grid with the tick marks. The 30mph line on the third chart seems to be randomly placed. If you need fine-grained control, Google Charts is not your choice.
The .Net Chart Control on the other hand gives you a lot of control. I worked on a prototype earlier this year and the goal was to create charts that matched the ones from a print publication put together by a design firm. At first I thought it would require compromises, but the Chart Control turned out to be capable of the job. Here is the result (click the 2nd tab). I found the ability to use a range chart in this way, and have control over the placement of the labels for the vertical lines at special values pretty unique for a free tool. Also, Alex Gorev who runs the MSDN forum turned out to be very helpful when I ran into an issue (even though he could not ultimately solve it).
Not a control, but another option for producing charts and publish them to the web, is SSRS. I have used the web service interface to publish a report that contains a chart. This could be a better option for very large sets.
2014 update: The comments above are for a previous (obsolete) generation of Google's chart API. The new API probably addresses many of the limitations, so you should check it out.
SimpleChart is a straight forward and easy to use component. I've used Fusion Charts and would also recommend it for simplicity and well presented graphs.
I went with the Microsoft Chart control, mentioned as the marked-answer, over here: Charts for ASP.NET
so far the best charts I have used is FusionCharts. it can be used with any programming language, as it provides a good documentation. the free version is good enough.
I have done a lot of .Net projects that required graphing and would recommend a solution outside of .Net. The reason why I go outside of .Net is because I expose my datasets by JSON (usually) and like to move the processing to the client. Altogether this saves me burgeoning my servers with graphically intensive tasks.
I have mainly used Javascript API's and I would recommend Protovis because the charts are beautiful (but not always compatible with IE) and can be manipulated in realtime on the client with new AJAX fed datasets.
Another of note is Google Chart and Visualisations.
Echoing everyone else - it all depends what you need to do with it.
We looked at a number of chart controls for a recent project and it's amazing how many of them have really basic limitations. As an example, we needed to specifically set the size and position of the plot area - you'd think that would be easy but the dundas and the microsoft charting api can't do it. We also had a lot of problems getting charts to format datetime scales sensibly.
In the end we went for dotnetCharting. The website makes it look pretty rubbish, but we've found it to be extremely good, if a little quirky in places. I'd thoroughly recommend it to anyone. It's got some reasonably slick AJAXy stuff, but to be honest you can (and we did) custom write most of that stuff yourself anyway. There are more important things to consider when choosing the tool imho.
Make a list of specific things you think you'll need and then find a control that does them. Don't make any assumptions, as a lot of the tools have pretty elementary problems (as above).
I did not use a lot of charting tools, but make sure it will work with MVC if you are planning to use this framework. I have some issues with the DevExpress Grid and MVC.
I haven't used a cross-section of these controls, but of the ones I have used, I prefer the Infragistics WebChart.
In my opinion, the designer is easy to use and there is a ton of flexability.
My second choice would be the Google Chart API.
I've used the DevExpress XtraChart in ASP.NET, and it was great. I've used Google Chart API successfully in a rails project, but as it is hosted, generating the points and labels would be easy on any platform.
I am using ChartDirector in my projects. The thing that I like the most about this component is very complex examples. I have been able to implement their financial chart example with almost no alterations saving enormous amount of time in the process.
i has used microsoft charts control in one of my project. it provided me things that i needed.
Tutorial on Charts Control:
http://parasdoshi1989.wordpress.com/2010/10/03/how-to-include-charts-in-visual-studio-2008-express-edition-using-microsoft-chart-control/
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Scenario
I have recently graduated from university with a degree in Computer Science.
My degree mainly focused on C#.
I want to learn more and get better at what I do.
I notice a lot of companies always want their developers to know and use 3rd party tools.
Question
If I was developing C# Windows Forms applications, what 3rd party tools/libraries/controls etc. would be of use to me and for what reason?
The answer to this question depends on how you define "3rd party tools". I usually take that to mean products from companies other than MS but excluding free open source software. When it comes to 3rd party products (for-profit) I cannot think of any common products that I've used or been asked to learn over the last decade that I've been doing .Net development. Most MS shops I've worked with turn to MS solutions (for good or ill depending on your personal view).
That said, in recent years the number and quality of the various FOSS solutions out there has risen dramatically. I use the following whenever I can:
Logging: log4net
Inversion of Control Container (plus more): Castle Windsor
ORM: NHibernate
Unit Testing: NUnit
Mocks for unit testing: Rhino Mocks
For most of these projects there are many other options, these are just my current favorites. Learn to use these (and WHY they are needed) and you'll be many steps above the average .Net developer (sad but all to true).
The DevExpress and Telerik controls are pretty popular, but not free.
Some 3rd party .Net component providers that I've seen used in companies most often:
Telerik
Infragistics
They are not free. These kinds of providers offer large libraries of controls that you'd pick from to achieve your specific goals.
Many good suggestions here, I would also add a few other categories of tools:
Software configuration management/version control: CVS, Subversion, Git/Mercurial/Bazaar, Perforce, etc. Good use of SCM is essential for professional software development.
Issue tracking: Bugzilla, Trac, FogBugz, etc. I would also consider an issue tracking system to be a critical piece of software.
Documentation: Like it or not, it becomes very handy to know your way around Microsoft Word. Knowing how to manipulate styles, headings, numberings, cross-references, etc. can make your life a lot easier when writing documentation.
You'd probably want to have a look at Silverlight. It's a Microsoft alternative to Flash and uses C#. WPF are also something to look at for interfacing.
It might also be worthwhile looking at MOSS.
I've always liked the Xceed controls. In a lot of cases you could always build your own controls. The biggest advantage to using some of these packages is that it saves you the time and they have also been well tested (if not by the company then by the people that are using them).
I've used a couple of different packages over the years and found that if you can use one it's not that hard to use another. The biggest thing is knowing what is available out there so you don't spend two weeks building something that you could have just paid a few hundred dollars for.
You should know about resharper (helper for VS)
Crystal reports - for reports,
Some Grid tools (google it, there are many - I wouldn't bother to learn until need one)
and study advanced topics like: WCF, WPF
Cruise control or other building tool, bugnet or trac - bug management tools...
And of course - AQtime or other Profiling tools.
.NET Reflector
Hawkeye - The .Net Runtime Object Editor
Infragistics
I'd throw mono in there as well. Since you're looking to give yourself an advantage over other developers and improve your value to companies - having cross platform experience is advantageous as well.
There are a lot of 3rd party controls that will help you achieve more in less time. But I don't think many of them will really improve your coding skills (calling someone else to do all the work doesn't teach you much about how to actually do thise things yourself, but familiarity with them and the ability to learn new libraries is a good skill to practice)
Resharper is good for improving your coding skills (code analysis), coding style (autoformatting), and it's a great refactoring tool. It's expensive, though.
Microsoft do some free code analysis tools for Visual Studio (FXCop for code analysis, and there is also a Static Analysis addin) which will help improve your code quality.
AtomineerUtils (my own addin) encourages excellence in documentation and generally improves your code quality (by encouraging good naming style, etc)
Focus more on the tools used in the software development process. Enterprise Architect is used for designing applications from a high level. Once you design you application's business classes you can generate your classes' skeletons. You will be responsible for you code implementation once the class structure has been created.
For implementation purposes look at several C# platforms mentioned earlier. You want to focus Microsoft's WPF, WCF, WF. WPF is ok but it can not be used prior to .net 3.0 so check your client's requirements. I'm working on a project that targets the .net 2.0 because of restrictions by the client so the applicaiton was designed in WinForms. Silverlight is an option as well.
In addition, read up on design patterns as this will help you avoid creating high maintenance applications. A good book is Design Patterns in C#.
For testing look at the Visual Studio TFS system or third party programs like NUnit. You can google NUnit. This will help you ensure that your code does what you intended it to do on a granular scale.
Also, take a look at some of the source control software avaialbel like Subversion, Rational ClearCase, Visual SourceSafe. For large projects with multiple developers you'll need a source control tool that has multiple branches so that each developer has his or her own sandbox within the source control system.
I'm a big proponent of ComponentOne and use it in my new applications regularly. I find that if you're proficient in .NET winforms in general, C1 are very easy to pick up on and usually do what you want with little effort.
A couple people mentioned Telerik. I demoed it fairly extensively and found them to be a bit more complicated because they contain a ton of configuration options for look and feel. Awesome if you're some sort of graphic designer, but unless you're building the next Windows Media Player, I think it's overkill. The learning curve for the theming seemed a bit much for what I was trying to accomplish.
C1 and Telerik both run about $1000 to $1300 depending on what license you get.
You should also check out the Krypton toolkit. It free and has a lot of nice controls.
So I've been learning C# for like a year now (I'm 20 years old) and I'm getting pretty confident with it. I've also been meddling with C++ every now and again. For example just recently I've been following the Nehe OpenGL tutorials for C++ and I find it a fun way of learning.
I want to start looking at creating cross platform GUI software after I stumbled across this library called FLTK (fluid something rather). After finally and painfully getting it to work I found it refreshing to know that there are solutions for GUI creation in C++, however I think FLTK looked pretty old.
So I googled around for some newer GUI frameworks and decided to start playing with wxWidgets (decided against Qt because of licensing).
I downloaded it, compiled it, and looked to see if there were any IDE plug-ins for RAD development, as you can imagine going from drag and drop a component onto a form in C# I was hoping for something similar.
I learned that code::blocks has something of the sort so I tried that out. It was alright but the thing that turned me off was the horrible code completion; it would only show members and methods in the current object and nothing for the #included header files. I understand that code completion/IntelliSense isn't easy for C++ but Visual Studio 2008 handles it pretty good. I did find some other RAD tools like wxFormBuilder but it costs money, not something I want to do for simply learning.
So my TLDR question is if anyone has had experience with wxWidgets? Do you just develop in whatever IDE you're comfortable with and just code the GUI? Meaning no visual helpers? Perhaps you could give me a nudge in what direction I should be going :)
Thanks, this is also my first post on this site albeit I have read many threads before that have helped me solve copious problems. Cheers!
My suggestion is to learn how to do GUI layout with wxWidgets in code, then when you get good at it learn how to use the GUI tools.
Doing this kind of work manually for a while gives you the understanding about what you need ("Ok, I need a wxSizer, vertical, to put these two horizontal wxSizers into, where I put my a wxStaticText and a wxTextCtl for each line ...")... where as I think if you started out with the GUI tools you'd just tend to get annoyed because (last time I looked) none of them were Drag And Drop editors like you get with .NET.
Definitely give Code::Blocks another try. It is a WONDERFUL environment to work with wxWidgets in. It comes with a form designer and templates for wxWidgets projects, so I can't imagine working without it.
Also, for a good beginner's introduction to wxWidgets, try this page. It helped me alot when I started with it.
I use wxWidgets without using a drag and drop designer. There are obviously drawbacks to that approach but an advantage is that you don't have any horrible automatically generated code to deal with. In the past I've found having such code in the middle of my project has caused various types of grief - especially if you decide it needs some serious changes it is often necessary to start from scratch because form designers are so much better at "writing" as opposed to "editing".
For simple applications you can assemble a UI using a mixture of customized and standard widgets without too much difficulty. Check out the wxWidgets samples and demos, which use that approach. My chess app (see my website) uses this approach too.
A more elaborate UI could possibly be implemented by writing something special at a higher level of abstraction. The kind of thing I am thinking of would be a subsystem that accepts high level flexible requests to provide different types of user interface functionality, and then sorts out the details of the controls to create and the positioning etc. of those controls itself. That is kind of a technical fantasy of mine but I haven't ever really attempted to do it. Actually, a fairly primitive facility of this type is already available and used by the demos I mentioned; It is called a "Sizer" (class wxSizer) and is basically a control container.
Finally I would point out that problems with the Qt licence have basically gone away since Nokia bought Trolltech and made it "more" free (LGPL licence). Many people think Qt is the way to go these days. I am pretty happy with wxWidgets but will definitely evaluate Qyt seriously one day. Good luck with your projects.
I have developed a number of application GUIs using wxWidgets - you can see screenshots at http://ravenspoint.com/
IMHO, you should distinguish between designing a GUI and implementing it. Expecting to use the same program to design your GUI and to automatically emit all the code to implement the design is expecting too much.
A design program should be fast and simple. I recommend http://www.balsamiq.com/
Once you have settled on the design, then you can turn to the coding. Personally, I find that placing widgets on a panel using the wxPosition and wxSize parameters of the wxWidget constructors to be trivial - easier than trying to nudge widgets into their exact positions using the mouse.
The trouble with using some kind of form builder to emit all the code for a significant GUI is that you end up with a morass of automatically generated code that is hard to find your way around in. If the code has been handwritten, then you already know where everything is located.
wxFormBuilder but it costs money
wxFormBuilder is Free and Open source
Also Visual Studio is best for C++ coding in wxWidgets, but you will run into lots of issues on Linux due to the way Visual Studio handles a lot of things, like file names you have to take extra care for case sensitivity.
Also regarding the GUI, add the wxFormBuilder to the Visual Studio solution, add the file type handler to Visual Studio. Now just double click on it and add your dialogs, like you do it in C#.
Just add the generated code files to the Visual Studio project once and you are done.
It's very easy to use Visual Studio with GUI programming in wxWidgets.
Also don't forget to watch the CodeLite editor if you want to port on Linux. It is very much compatible with the Visual Studio projects and shortcut keys.
There is wxGlade and wxFormBuilder.
I don't know if there is another one, but the wxFormBuilder I know is free and open source.
You will find links to other tools on the homepage
of wxGlade (http:// wxglade.sourceforge.net/).
Most of these programs are able to output xrc files, which are are an XML representation of your GUI. It address the issue of complexity of the generated code but is not as powerful.
Yet personally I don't use any of these tools, except sometimes to see what it's going to look like before I do it but never to actually generate code.
I just finished doing a hello world program in both wx and fltk using the netbeans IDE. Microsoft Visual Studio WinForms or MFC was much easier than either. I needed cross platform capability so I could not use it for this application. I finished fltk in much less time than wx. The program was simpler, smaller, faster, and easier to write. Wx had pretty disjointed documentation and organization. Fltk was designed back in the "old days" when small fast and efficient was valued. That's probably why it seems "old" to you. I'm an old guy so it worked for me. YMMV
I am looking for reusable open source components. The level of depth, breadth and hopefully quality that I'm looking for is similar to this.
Although I need them in programming languages C#, Java and Flex (which I often use in my projects), other languages such as PHP, Perl, Python, Ruby etc. are welcome. I see this as a big help for other programmers who have similar needs such as mine.
I plan to eliminate code duplication when building a large scale (in terms of code size) project by using this components and focus more on the business logic of it.
Is there an open source (Java) or Codeplex (Microsoft) component implementation that does this that I'm not aware of?
EDIT:
The main point that I want to address for this question is to avoid interdeveloper duplication. Interesting case found in Pragmatic Programmer: An audit for government computer systems have been made showed 10,000 different programs having their own version for Social Security number validation.
If I understand your question, that is what Apache Commons is all about.
I would point out that although such things are good, they aren't all upside. If all of those 10,000 programmers had to coordinate getting a SSN validation going, it would have been quite a bureaucracy to get anything done.
Similarly in general, one of the issues with apache commons is you might be integrating your code into something that uses an older (or newer) version of the same component.
Also, any code changes would have to be validated over a huge code base, and some times ugly workarounds made in the name of reuse.
Reuse and DRY are wonderful things, but like everything else, as you scale larger, there are tradeoffs.
Not quite sure of the context of the question, if you want UI components for web-based Java applications, maybe the JSF framework with a component library like Apache MyFaces which has several component libraries, or ICEfaces.
Well if you're after some flex components you could try some of the following, sorry I can't post hyperlinks I'm a new user so just copy paste text (this sucks - give me some reputition so that I can at least answer a question!)
link - code.google.com/p/flexlib/
link - www.adobe.com/devnet/flex/tourdeflex/ (this has examples and source code for components other than adobe products)
link - flexbox.mrinalwadhwa.com/
link - www.adobe.com/cfusion/exchange/index.cfm?event=productHome&exc=15 (this has free and paid for components)
There are loads more open source flex components out there. Just check google.
A few days ago, I read a question asking how many developers hand code their HTML/XHTML rather than rely on the WYSIWYG tools - https://stackoverflow.com/questions/406052/do-most-web-programmers-not-designers-use-wysiwyg-editors-or-hand-code-their
I tend to lean towards designing ASP.NET server controls rather than User Controls for use in my code. I do this so that I can reuse them by drag and drop into WYSIWYG and just set the few pertinent properties. This does cost a little extra in time designing the components, but simplifies things a lot when I come to using them in larger applications.
After having read that most developers seem to hand code rather than use WYSIWYG, it leads me to wonder: Am I wasting my time developing components this way?
Edit: To clarify - mostly, the original intent has been that these controls are for my own use. However, there have been a number of occasions when they could be useful for the rest of my team or potentially for public release. However, like most things, I tend to see the huge potential extra value provided by comparatively little extra work regardless of the probability that the extra value will be realized.
No, you are not wasting your time. Your potential user base will be larger if WYSIWYG users can easily use your components. If you are the only user of these components design them so they fit your development style. If you design visually then it makes sense to have WYSIWYG support.
You could create a UserControl and using different techniques get it compile into a dll that can then be referenced by your web applications:
Overview of some methods:
Link
Detailed method:
http://webproject.scottgu.com/CSharp/UserControls/UserControls.aspx
I never use the WYSIWYG tools cause it never trully is WYSIWYG once you facter javascript, and CSS and other things. (I know VS2008 got better but not perfect). And the designers are always sooo slow. I prefer to code using markup.
If your developing a commercial component that you intend to sell you should spend the time on having the most complete feature set IMHO. Including WYSIWYG. If your building components so that your or your team can use them, then you should evaluate the cost benefit of the time it takes to get your components that extra step.
I think you're not wasting your time, especially if you want to release these controls for other developers to use. If the effort required is truly "a little extra" and you find it helps you in larger projects I think your controls are improved by being WYSIWYG tool compatible.
Personally, I generally hand code HTML/XHTML but I like using WYSIWYG functionality on occasion. I've always found that controls that were WYSIWYG friendly were easier to use than controls that relied on all code being written manually.
For your own use you already know if you are wasting your time or not.
[me enters karma-bomb shelter]
For the public and the rest of your team I'm going to offer an opinion against the flow that you probably are... well not wasting your time, but possibly not making the best use of it.
I think very few web developers will take WYSIWYG offerings seriously, however if the majority can use your controls at a hand code level and the minority can do their drag and dropping then you've provided the benefit of choice which is never an outright bad thing. Except possibly where small children and good behaviour are concerned.
If you are more comfortable with your work in the WYSIWYG editor and developing server components makes your job easier, then I don't see why you should attempt to conform to other developers methods if what you do works for you.
I think you have to take that poll with a grain of salt. Just because most people on Stack Overflow say they hand-code their HTML doesn't mean that most web developers do. Tools like Dreamweaver and Microsoft Frontpage are highly popular tools, for instance, mainly because of their WYSIWYG features. Web hosting companies usually have WYSIWYG web page builders that are also highly popular. I hand-code most of my stuff too, but I do a lot of freelance work working with web developers from other companies around the world, and from my personal experience I would probably go so far as to say that most web developers DO use WYSIWYG tools. The more experienced a web developer is, the less likely they are to use a WYSIWYG tool, but those with less experience far outnumber those with a lot of experience.
You might pose the question, to yourself, "are other developers wasting their time hand coding controls?".
I'd typically just drag and drop controls on a page and alter the generated html when needed, if it's only used on one page. If the control and it's functionality are used on more than one page in the same web app, then I'd go to a user control. When it's going definitely going to be used across apps, then I only want to code once so I go to a server control I can easily distribute. I think the key is that it (the layout and functionality) are being used in multiple places, or you're about to use it in multiple places. It's just as much a "mistake" to have duplicate code in many places as it is to have spent more time developing reusable code for one use. Plus, it's software, so you can change it later!
I think your real question probably is, "is there a way to develop my UI that I should learn more about, because it might be better than the way I'm doing it now?"
Considering how fast things are changing, that's a question we are all asking pretty frequently. I reember the first time I saw sites that were developed with Ruby on Rails; and then I ran through a tutorial that had no step for wysiwyging; but everything was accomplished with CSS and themes; and it hit me that maybe Dreamweaver isn't the most productive environment for everything, and the result could be at least equally attractive.
Working through the MVC tutorials gave me the same jolt.
So I think it's at least worth trying the alternatives to make an intelligent decision about what works best for me, my skills, and my requirements. I want the best tools in my toolkit, even if I don't need them for every project.
Especially since you seem to appreciate that your current approach is taking a substantial amount of your time.
I would say that if it is indeed only a little extra work and it adds so much extra value it's hard to conceive it could be a waste of time. Users coming in behind you that look to use your components in future will find it a lot easier and will be saving a lot of time that would otherwise be spent coding by hand. Not to mention that if you can drag and drop a component with a mouse click and drag, then why waste the keystrokes?
Like everything else, the appropriate answer is 'it depends' ...
You have to measure the ROI of adding this functionality.
For the 'I'; Personally, I've never created a web control that would work for a wysiwyg editor, so I don't know how much of effort it is.
For the 'R'; If you work on a large development team, distribute your code, will reuse these controls yourself in a wysiwyg editor, or even just want the experience, then you will definitely get your return. But if doing this is based on future maintainence programmers; you may be leaning a bit into the over optimization side. (IMHO)
I would agree with the previous posts. I don't think you are wasting your time. Making your control WYSIWYG enabled allow users to do things both ways, threw the designer and threw code. Also some times it is easier to discover what a control does when you use the property editor, apposed to making your changes in code and then compiling and running the app.
When I started to program I loved WYSIWYG and used it for almost everything.
I started to code html by necessity, there was always something that i just coul not get right using just the WYSIWYG editor. Has time passed i realised that it was faster for me to simply right the html than using the mouse to set the properties, so as time passed i used more and more html until no more WYSIWYG editors for me.
Why did i tell you this story? because my personal experience tells me that a beginner programmer will love WYSIWYG and your efforts to make server controls and a advanced programmer wont give you any credit for it.
My opinion is that you should do as you prefer. If you do this way to please others, don't bother to if there is no beginner programmer on your team.
That's my 5 cents ;)
I think I would create the control if it's used in many places. Even you hand code the html, it still saves time, and simplify the work.
but I agree that hand-coding html/css is more efficient, WYSIWYG web page builders don't support this very well.