Thanks a lot for your continued help.

I've now got the following code, which i think is the c# equivilent of the vb.net stuff in that link you gave. I still get the same result - the control isn't there at design time.

BTW. i'm using MS ASP.NET Web Matrix, not Visual Studio as the designer, would this make a difference?

Code:
public class LoginControlDesigner : System.Web.UI.Design.ControlDesigner
	{
		protected override string GetEmptyDesignTimeHtml()
		{
			string HTML = "This is the No.1 Invisible control";
			return CreatePlaceHolderDesignTimeHtml(HTML);
		}
		protected override string GetErrorDesignTimeHtml(Exception e)
		{
			return CreatePlaceHolderDesignTimeHtml(e.Message + "<br>Check to make sure all properties are valid.");
		}
		public override string GetDesignTimeHtml() 
		{
			// Component is the control instance, defined in the base
			// designer
			LoginControl ctl = (LoginControl) Component;
			return GetEmptyDesignTimeHtml();
		}
	}