Skip to content

Design Mode check #3300

Description

@oggy22
  • Have you experienced this same bug with .NET Framework?:
    Yes

Problem description:
Hi Winforms team,

I’d like to raise an issue with Winforms about the way to check if the current code is run by designer or not. It’s rather confusing and I think there is room for improvement. The ways and suggestions I found from multiple sources (Stackoverflow and few of your team mates) are:
• DesignMode property is flag, but it doesn’t seem to be reliable. Some suggest its value is correct only in ctr after InitializeComponents. Others suggest walking the parents up and checking the property.
• LicenseManager.UsageMode == LicenseUsageMode.Designtime; This is also not reliable enough, at least from my experience, it Is sometimes false whereas it should be true.
• System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv" This seems clunky but seems to work for me (PR). However, if Visual Studio changes its process name it’ll stop working.
• Various sources suggest the combinations of the previous 3.

I am not blaming anyone (I guess that’s clear?), I am just pointing to something which would be beneficial to improve on. Ideally:

  • We won’t have both DesignMode and LicenceManager.UsageMode, but only one of these two. Having both is confusing already.
  • It will be always reliable, not only from constructor.
  • It will be in in the next .NET platform (core net 5?)
  • If for any reason this won’t/can’t be done, please have the comments on these two properties (DesignMode and LicenceManager.UsageMode) explain all the caviats and details.

Thanks, Ogi!

Expected behavior:
Ideally I would have a Property on the System.ComponentModel.Component which would be completley reliable regardless of if it's used from constructor or not

Minimal repro:

  1. Create a simple WinForms control and a WinForms app using it
  2. Try all 3 forementioned ways of checking if in the design mode
  3. Observe that none of them is 100% reliable

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

api-suggestion(1) Early API idea and discussion, it is NOT ready for implementationdesign-discussionOngoing discussion about design without consensus

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions