This is the archived version of Roland Weigelt's weblog that ran from 2003 to 2023 at weblogs.asp.net

Contents tagged with English

  • An Award for Two Years of Bonn-to-Code.Net!

    Wow, that came really unexpected: at a company meeting last Friday I received an award for organizing and leading the .NET User Group Bonn called "Bonn-to-Code.Net" (all credits for the glorious pun go to Jens Schaller).

     

    Comma Soft AG has been very supportive in the past two years by letting the monthly meetings taking place in the conference rooms, but other than that the user group is something I'm running in my spare time - that's why this award was such a (nice) surprise.

  • Mysterious Mail / The Final Mill / Van Velsenmeer

    To whom it may concern: Nice idea, sloppy execution.

    Update 2008-02-09: As this thing is getting more and more elaborate, I'd like to clarify the "sloppy" comment. While I do acknowledge the overall effort you (whoever you are) put into this ARG, I must say that the initial impression wasn't favorable in regard to the level of quality - the English texts on the websites of two supposedly no-nonsense companies/organizations really would have benefited from some proof-reading. In a game where the goal seems to be the recruiting of smart people, you should always keep in mind that everything you do reflects on the company behind the game. Anyway, there are people (with way too much time on their hands) working on the various riddles and puzzles and I honestly wish you luck that at least one of them actually ends up working for you in the future.

  • 1st Place for EventFilter!

    The winners of the programming contest over at the German website www.dotnet-snippets.de have been announced – my entry EventFilter was chosen by a jury from almost 100 entries to be the winner.

    EventFilter is a generic helper class for dealing with events that may be raised multiple times in rapid succession, when only the last event of a “burst” is of interest.

    You find the English version in this blog post I published recently.

  • GhostDoc 2.1.3 Released

    <summary>
    GhostDoc is a free add-in for Visual Studio that automatically generates XML
    documentation comments for C#. Either by using existing documentation inherited
    from base classes or implemented interfaces, or by deducing comments from
    name and type of e.g. methods, properties or parameters.
    </summary>

    20080106_GhostDocQuick Facts

    • Version 2.1.3 is a minor bugfix release, fixing problem with documentation for specific operators and import/export of partial configurations.
    • Download on the GhostDoc Website
    • Users of earlier versions: Please read the ReadMe on upgrading!

    What’s New in GhostDoc 2.1.3:

    • Fixed: No documentation was generated for the operators "&", "<" and ">".
    • Fixed: Rules for classes, events, interfaces and structs were not shown in the export dialog, making it impossible to exclude them from an export.
    • Changed: Tags for empty rule collections in config files are now removed (cosmetic change, does not break compatibility of the file format).
    • Added: Some "of the" triggers and prefixes, "no the" words and acronyms.

    Note that VB.Net support is turned off by default and has to be turned on in the configuration dialog.

  • GhostDoc: A Look Back at 2007

    Here are some statistics for my Visual Studio add-in GhostDoc for the year 2007.

    Downloads for Visual Studio 2005

    • Version 1.9.5 (released back in 2006): 15294
    • Version 2.0.0 (released 2007–05–01): 11395
    • Version 2.1.0 (released 2007–06–24): 2351
    • Version 2.1.1 (released 2007–07–04): 24909
    • Version 2.1.2 (released 2007–11–25): 4873
    • Total: 58822

    Downloads for Visual Studio 2008

    • Version 2.0.0 (released 2007–05–01): 444
    • Version 2.1.0 (released 2007–06–24): 153
    • Version 2.1.1 (released 2007–07–04): 3202
    • Version 2.1.2 (released 2007–11–25): 3140
    • Total: 6939

    Downloads for Visual Studio .NET 2003

    • Version 1.3.0 (released back in 2005): 4409

    Donations by chosing an item from my Amazon WishLists (US, UK, DE):

    • Total: 7 (a huge Thank You to you guys and gals!)

     

  • EventFilter Helper Class

    EventFilter is a generic helper class for dealing with events that may be raised multiple times in rapid succession, when only the last event of a “burst” is of interest.

    Introduction

     

    Imagine a Windows Forms program mimicking the GUI of the Windows Explorer, where selecting a folder in the tree view on the left side will update the list of files on the right. A "quick'n dirty" implementation would handle the SelectedNodeChanged event of the TreeView control to update the file list, but a robust implementation that works nicely with slow media like CD/DVD or network drives should use a different approach.

    When playing around with an actual instance of Windows Explorer and watching it more closely, you'll quickly notice that the file list is not updated immediately, but after a slight delay. You can use the keyboard in the tree view to move quickly from folder to folder, skipping folders you are not interested in. Only after you stay on a folder for a little while, the file list gets updated.

    This approach of "wait until things have settled down a bit and then handle the last occurrence of an event" is pretty common in GUI development. The typical implementation uses a timer that is reset each time a new event is raised within a certain time interval, until the timer is finally allowed to elapse. Only at that time the event will actually be handled.

    During development of a small hobby project called RemoteCanvas I got tired of taking care of timers, helper variables and event handlers over and over again, so I finally wrote a helper class acting as a "filter" for events.

    Usage

    • Declare a member variable to hold an instance of the EventFilter class, with an event argument type matching that of the event to be filtered:
      private EventFilter<EventArgs> _filter
          = new EventFilter<EventArgs>();.
    • Hook up the HandleOriginalEvent method to the original event of the control. There's no great design time support for this, so you have to do that manually, e.g.
      myControl.SelectedIndexChanged += _filter.HandleOriginalEvent;
    • Connect the FilteredEventRaised event to your event handler:
      _filter.FilteredEventRaised += MyHandler;
    • That's it!

    Download

    The source code for the helper class (plus a small demo project for Visual Studio 2005) can be downloaded here.

  • GhostDoc 2.1.2 Released

    <summary>
    GhostDoc is a free add-in for Visual Studio that automatically generates XML
    documentation comments for C#. Either by using existing documentation inherited
    from base classes or implemented interfaces, or by deducing comments from
    name and type of e.g. methods, properties or parameters.
    </summary>

    20071125_GhostDocQuick Facts

    • Bugfix release
    • Download on the GhostDoc Website
    • Users of earlier versions: Please read the ReadMe on upgrading!

    About this Release

    Version 2.1.2 fixes a problem with side-by-side installations of GhostDoc versions for Visual Studio 2005 and 2008.

    What’s New in GhostDoc 2.1.2:

    • Fixed: GhostDoc versions for Visual Studio 2005 and Visual Studio 2008 interfering when installed side-by-side.
    • Changed: An upgrade installation by starting the MSI file while an older version is installed is no longer supported, i.e. you have to uninstall GhostDoc before running the new setup. Note that this does not affect an upgrade of the configuration of earlier versions: the configuration file is not removed during uninstallation of the GhostDoc add-in, so you'll still be offered to upgrade your configuration when installing the new version. For detailed installation instructions, please take a look at the ReadMe in the ZIP file.
    • Added: A few special words for ("of the" trigger and prefix words, "no the" words).

    Note that VB.Net support is turned off by default and has to be turned on in the configuration dialog.