Пользовательский элемент управления Winform: DesignMode не возвращает true, тогда как в режиме разработки - PullRequest
19 голосов
/ 03 декабря 2010

Я узнал о DesignMode здесь Как обновить пользовательский элемент управления winform во время разработки после изменения свойства

Но когда в конструкторе моего пользовательского элемента управления я использую его, он никогда не возвращает true, поэтому, когда я перетаскиваю свой пользовательский элемент управления, он всегда показывает max = 200, так что не так?

if (this.DesignMode)
{                
    this.Min = 0;
    this.Max = 100;
} 
else 
{
    this.Min = 0;
    this.Max = 200;            
}

this.LabMin.Text = this.Min.ToString();
this.LabMax.Text = this.Max.ToString();  

Ответы [ 3 ]

38 голосов
/ 03 декабря 2010

LicenseManager.UsageMode предназначен для этого.

На самом деле это единственный надежный способ определить, находится ли ваш элемент управления в режиме разработки или нет.Он действителен только во время конструктора, но его можно легко сохранить в поле класса для дальнейшего использования.

Свойство DesignMode для вложенных элементов управления будет иметь значение false, даже когда элемент управления контейнера находится в режиме разработки.

4 голосов
/ 03 декабря 2010

Может случиться так, что элемент управления также должен иметь ISite, связанный с ним, иначе он всегда вернет false

Индикатор режима дизайна сохраняется в ISite; следовательно, если компонент не имеет ISite, связанного с это значение этого свойства ложь.

Источник: MSDN

Редактировать : также смотрите этот пост, поскольку у кого-то была проблема, аналогичная той, с которой вы столкнулись

Проблемы с конструктором Windows Forms и свойствами DesignMode

Редактировать 2 : Я также нашел сайт, который, кажется, указывает на то, что это обычная проблема с пользовательскими элементами управления, но он также перечисляет некоторые обходные пути. Вы можете найти его здесь:

Неисправность режима разработки пользовательского элемента управления

3 голосов
/ 03 декабря 2010

Для того, что я помню в Ctor, свойство DesignMode еще не имеет своего значения.Вы должны использовать его после initializeComponents или в обработчике событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...