Click here to Skip to main content
15,892,839 members
Articles / Desktop Programming / Windows Forms

Resolve DesignMode for a User Control

Rate me:
Please Sign up or sign in to vote.
5.00/5 (10 votes)
26 Aug 2012CPOL2 min read 53.1K   694   9  
The tip shows one way to resolve if a user control is in design mode.
namespace Controls {
	public static class Extensions {
		/// <summary>
		/// Extension method to return if the control is in design mode
		/// </summary>
		/// <param name="control">Control to examine</param>
		/// <returns>True if in design mode, otherwise false</returns>
		public static bool IsInDesignMode(this System.Windows.Forms.Control control) {
			return ResolveDesignMode(control);
		}

		/// <summary>
		/// Method to test if the control or it's parent is in design mode
		/// </summary>
		/// <param name="control">Control to examine</param>
		/// <returns>True if in design mode, otherwise false</returns>
		private static bool ResolveDesignMode(System.Windows.Forms.Control control) {
			System.Reflection.PropertyInfo designModeProperty;
			bool designMode;

			// Get the protected property
			designModeProperty = control.GetType().GetProperty("DesignMode", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

			// Get the controls DesignMode value
			designMode = (bool)designModeProperty.GetValue(control, null);

         // Test the parent if it exists
			if (control.Parent != null) {
				designMode |= ResolveDesignMode(control.Parent);
			}

			return designMode;
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect
Europe Europe
Biography provided

Comments and Discussions