WinForms, WPF and Working for Microsoft

I had an interview candidate ask me recently what I loved most about working for Microsoft.  Oddly enough the answer is you!  I love the amazing community of developers Microsoft is fortunate enough to have.  I love it that you let us know when things aren’t work the way they should and I really, really love it when we can fix those things right away. 


Mike talked about one of those things in his recent post on shipping the WPF-WinForms interop technology in Vista\WinFX.  Having been somewhat involved in making that decision, I can tell you that feedback from YOU played a key role in making the change... So please, by all means, keep the feedback coming and thank you!

Comments (12)

  1. Be careful when you ask for non-specific feedback – I have a tendency to immediately post a reply with whatever my pet issue of the moment is. To Microsoft’s credit, each time I’ve done this the issue has eventually gotten fixed (the first was posting about Nullable in CyrusN’s blog, and the second was being one of the zillion people to complain about web "projects" in VS2005 to ScottGu).

    My new pet issue is a limitation of the CLR’s current generics model; namely that if you have a Foo<T> but don’t know at compiletime what T *is*, the only variable type you can store that object in is System.Object (unless Foo<T> has some base class that doesn’t depend on T). Furthermore, short of using reflection, it’s utterly impossible to call any of the methods declared in Foo<T> on that object; there’s absolutely no reason why you shouldn’t be able to call methods that don’t include T in their parameters, and if they *return* T then at the *very* least you could store the result in a variable of type object.

    Java’s system of generics, where everything is done by erasure, utterly sucks, but one thing they *did* do right is introduce the concept of a "wildcard type". If you write List<?> you’re referring to a List of *something* without specifying what the something is. You can call methods to do things like get the number of items, retrieve the nth item as an Object, etc, but you can’t call methods like add() because it wouldn’t be typesafe: there’s no way to know if the value would be valid.

    Furthermore, Java lets you put constraints on the wildcard, eg List<? extends Comparable> would be a useful way to specify a list that you can sort, or List<? super String> indicates a list that you can put Strings into, ie, either List<String> or List<Object>.

    I’ve only actually been trying to do serious work in C#2.0 for a pretty short amount of time, and I’ve already spent an inordinate amount of time working around the lack of this feature. You can work around it if you’re lucky enough to be working with a generic type that has a non-generic equivalent (as non-generic IList is to List<T>) but most generic types don’t, and using IList isn’t typesafe if you’re trying to add values.

    Please please pretty please get this into the next major version of the CLR!

    PFC issue here:

    12 votes, averaging 4.58, no response from MS yet…

  2. Anonymous Coward says:

    How about forcing the Avalon team to fix the countless serious FxCop violations in the latest CTP to prevent them from making the same mistakes as the WinForms teams…

  3. BradA says:

    Thanks for the feedback… Keep it coming..

    What are the specific FxCop violations that bug you?  Hearing your feedback on specifics helps us prioritize fixes..

  4. Laura T. says:

    I’d like to see some visual performance improvement.

    Currently WinForms windows paint quite slowly if they have a few controls than usual.

    Maybe a two phase initialization of the controls might help, that is, first initialize all UI/visual properties to be able to show up the control and form as early as possible and then the other, non visual, properties (hopefully asynch). In this way the UI pains faster even that it’s not complete and responsive.

  5. Nat says:

    Please add a decent color picker control. The current is a poor excuse.

  6. Anonymous Coward says:

    Just to name a few in WindowsBase and PresentationCore:

    Just Plain bugs:

    -> Instantiate argument exceptions correctly

    -> Mark ISerializable types with serializable

    -> Validate arguments of public methods

    -> PInvoke declarations should be portable

    Design Issues:

    -> Avoid out parameters (TileBrush.GetContentBounds(out Rect contentBounds):Void);

    -> Collection properties should be read only

    -> Rethrow to preserve stack details

    -> Do not raise reserved exception types (there are nearly 50 internal methods are that are throwing Exception or SystemException)

    -> Implement IDisposable correctly (public types such as DocumentPage, GestureRecognizer, etc)

    Naming & Spelling:

    -> Only FlagsAttribute enums should have plural names

    -> Long acronyms should be pascal-cased (URI instead of Uri)

    -> Compound words should be cased correctly

    -> Short acronyms should be uppercase

    -> Use preferred terms

    -> Resource strings should be spelled correctly

    Looks like Framework Design Guidelines should be required reading….

  7. Saurabh says:

    Wow, thanks for this feedback …

    Please use any forum that works for you to get feedback over to us at WinForms, we do take these suggestion seriously in our feature planning.

    Also if you would like to track your bug reports/feature requests and have people vote to support your want, LadyBug is the best way of getting to the product teams.

    To Log a Winforms Bug –

    Go to the main Ladybug page [].

    Log in using your MSN Passport credentials (@hotmail or @msn email)

    Under Product/Technology, select Windows Forms

    Investigate whether or not your bug and/or suggestion has already been logged by another user.

    (Very often it might turn out to be an issue we are already lookign at and you can add your vote to bug so we know another customer cares for the scenario as well)

    Fill in the form.

    Keep the feedback comming.

  8. Saurabh says:

    Laura thx for your suggestion on visual performance improvement, we shall be looking at performance improvements for our next major realease.

    Milena  our Performance Developer has an article out in MSDN magazine you might be interested in.

  9. Krish Ranganathan says:

    I just watched your piece about WinFx on MSDN TV.  I have a question/comment regarding that.  One of the selling points of .net initially was that,  an application developed on .net would be portable.  With WinFx, it seems like .net is tightly coupled with the Windows operating system there by losing "portablility".   I’d like to hear your thoughts on this.  

  10. BradA says:

    As you likely know we have standardized a subset of the .NET Framework that allows anyone to build a base level implementation.   And of course we have the .NET Compact Framework as well which runs on many devices  

    A broad range of OSs and devices are as important as ever if not more so…

    Does that help?

  11. Rob Relyea says:

    Anonymous Coward-

    We’ll look through those violations and post a reply soon.  Some are clearly by design…and we’ll explain why.  But let us go look at that list first.

    Thanks, Rob

    WPF, PM

Skip to main content