문제

아래 코드는 설계 모드에 있는지 여부를 감지하기 위해 예상되는대로 작동하지 않습니다 (vs.net 2003- 제어 라이브러리) :

if (this.site! = null && this.site.designmode == true)
{
// 디자인 모드
}
또 다른
{
// 런타임
}

복잡한 사용자 컨트롤에 사용되며 다른 사용자 컨트롤에서 파생되거나 다른 사용자 컨트롤을 포함합니다.
vs.net 2003에서 설계 시간을 감지하는 또 다른 방법이 있습니까? 아니면 위의 코드의 문제는 무엇입니까?

도움이 되었습니까?

해결책

DesignMode 생성자 내부에서는 작동하지 않습니다. 일부 대안 (1.1에서 작동하는지 확실하지 않음)은 다음과 같습니다.

if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)

또는

전화 GetService(typeof(IDesignerHost)) 그리고 그것이 무언가를 반환하는지 확인하십시오.

첫 번째 옵션으로 운이 좋았습니다.

다른 팁

httpcontext.current == null을 사용할 수 있다고 생각합니다. http://west-wind.com/weblog/posts/189.aspx

.NET 2.0에는 Control.DesignMode가 있습니다 (http://msdn.microsoft.com/en-us/library/system.web.ui.control.designmode.aspx). 그래도 2003 vs에 머물러야 할 좋은 이유가 있다고 생각합니다. 따라서 업그레이드는 옵션이 아닐 수도 있습니다.

업데이트 winforms, component.designmode를 수행하는 경우http://msdn.microsoft.com/en-us/library/system.componentmodel.component.designmode.aspx)는 확인하는 올바른 방법입니다. 그러나 this.site.designmode가 올바르게 작동하지 않으면 Component.DesignMode가 수행중인 점검을 수행하는 것과 같이 작동하지 않을 수 있습니다 (site! = null && site.DesignMode).

이것은 긴 샷 일지 모르지만 기본 제어가 사이트 속성을 무시하지 않는다고 확신합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top