И если есть элементы управления, которые прошли проверку, то CauseValidation не помогает
Ну, что он делает, это то, что собственность была разработана, чтобы сделать. Вот пример формы, чтобы показать это на работе. Отбросьте текстовое поле и кнопку в форме. Обратите внимание на то, как вы можете щелкнуть по кнопке, чтобы очистить текстовое поле, даже несмотря на то, что окно всегда отказывается от проверки. И как вы можете закрыть форму.
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
textBox1.Validating += new CancelEventHandler(textBox1_Validating);
button1.Click += new EventHandler(button1_Click);
button1.CausesValidation = false;
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
}
private void textBox1_Validating(object sender, CancelEventArgs e) {
// Always fail validation
e.Cancel = true;
}
void button1_Click(object sender, EventArgs e) {
// Your Cancel button
textBox1.Text = string.Empty;
}
void Form1_FormClosing(object sender, FormClosingEventArgs e) {
// Allow the form to close even though validation failed
e.Cancel = false;
}
}
C# или VB? Кроме того, знаете ли вы во время выполнения, когда кнопка находится в форме? –
Ну, конечно, это не совсем необходимо, и переопределение метода WndProc() формы, безусловно, не приведет вас никуда. Рассмотрите возможность установки свойства CausesValidation кнопки на False и с помощью события FormClosing формы, чтобы вернуть e.Cancel в значение false. –
@ C.Barlow Любой бы сделал. Да, он находится на фиксированной позиции в моей форме. –