Используя jQuery это очень легко. Необходимо быть в состоянии использовать ту же предпосылку для достижения того же результата в ванильном JavaScript также.
var $inps = $('#myForm').find('input,select,textarea')
, formAltered = false
;
$inps.change(function() {
formAltered = true;
$inps.unbind('change'); // saves this function running every time.
});
единственная проблема с этим состоит в том, если Вы измените значение и затем возвратите его к оригиналу, то оно все еще сообщит о форме, как изменено.
Атрибут [DefaultValue (...)]
является подсказкой для дизайнеров и генераторов кода. Это НЕ инструкция для компилятора.
Дополнительная информация в этой статье базы знаний .
А как насчет того, чтобы просто установить для частной переменной-члена нужный цвет по умолчанию?
private Color lineColor = Color.Red;
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
Если вы хотите, чтобы он сохранился , просто выньте набор доступа.
Изменить
Я вижу, вы хотите, чтобы в списке свойств в дизайнере отображался цвет по умолчанию.
Вы должны переопределить свойство BackColor базового элемента управления, добавить новый атрибут DefaultValueAttribute для вашего свойства new , а затем фактически установить цвет по умолчанию в конструкторе или в методе InitializeComponent () (в Designer.cs), что, вероятно, лучше, поскольку он предназначен для дизайнера.
public partial class RedBackgroundControl : UserControl
{
public RedBackgroundControl()
{
InitializeComponent();
base.BackColor = Color.Red;
}
[DefaultValue(typeof(Color), "Red")]
new public Color BackColor
{
get
{
return base.BackColor;
}
set
{
base.BackColor = value;
}
}
}
Хитрость заключается в использовании шестнадцатеричного кода цвета:
[DefaultValue(typeof(Color), "0xFF0000")]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
Я думаю, вы также можете использовать «255, 0, 0», но я не уверен и обычно использовал либо названные цвета, либо шестнадцатеричный код.