У меня CustomForm унаследовано от Форма , которая реализует логическое свойство с именем Prop . Формы, которые я буду использовать, будут наследоваться от CustomForm . Это свойство будет рисовать и вносить изменения (если оно включено) в форму. Однако это не работает должным образом, разработанная VS IDE не обновляется для отображения изменений. Но если я нажму Ctrl + Shift + B (Меню: Построить »> Построить решение), VS IDE обновится, дизайнер форм даже исчезнет на долю секунды и перерисовает себя с примененными новыми изменениями.
Итак, есть ли способ, с помощью кода, заставить конструктор VS IDE обновляться, как это происходит при создании решения? Если так, я мог бы добавить этот код в набор доступа Prop , и моя проблема исчезла.
Обратите внимание, что я пытался вызвать Invalidate (), Refresh () и Update. Но никто из них, похоже, не решил проблему ...
Вот немного понимания моей настоящей проблемы. Мой код выглядит примерно так:
internal class MyForm : Form {
private FormBorderStyle formBorderStyle;
private bool enableSkin;
[DefaultValue(false)]
public bool EnableSkin {
get {
return enableSkin;
} set {
enableSkin = value;
if(enableSkin) {
BackColor = Color.Lime;
MaximizedBounds = Screen.GetWorkingArea(this);
TransparencyKey = Color.Lime;
base.FormBorderStyle = FormBorderStyle.None;
} else {
BackColor = SystemColors.Control;
MaximizedBounds = Rectangle.Empty;
TransparencyKey = Color.Empty;
base.FormBorderStyle = FormBorderStyle;
}
}
}
[DefaultValue(FormBorderStyle.Sizable)]
public new FormBorderStyle FormBorderStyle {
get {
return formBorderStyle;
} set {
formBorderStyle = value;
if(EnableSkin) {
base.FormBorderStyle = FormBorderStyle.None;
} else {
base.FormBorderStyle = formBorderStyle;
}
}
}
internal MyForm() {
EnableSkin = false;
FormBorderStyle = FormBorderStyle.Sizable;
}
}
А у меня проблема примерно такая: http://blogs.msdn.com/calvin_hsia/archive/2007/05/01/windows-vista-aero-borderstyle-paint-problem-as-non-administrator.aspx
В моем случае это происходит, когда вы устанавливаете EnableSkin в True, меняете его обратно на False, а затем изменение FormBorderStyle вызовет проблему, которую вы можете увидеть по ссылке выше. Как указано в статье, проблема не возникает при запуске VS от имени администратора.
Вот почему я ищу способ обновить конструктор VS IDE. Другими словами, теперь, когда я нашел эту статью, мне нужно заново создать окно, как это происходит при перестроении решения.
Как объявить свойство в базовой форме?
В настоящее время у меня есть:
public class MyForm : Form { }
И я могу объявить свойства только внутри этого класса, но не внутри Формы 1. Я также использовал Invalidate (), как я говорил в первом посте, но это не решает мою проблему.