В моем приложении есть NumericUpDown, но это опасно. При изменении значения весь документ стирается. Из-за этого я хотел бы дать пользователю предупреждение (даже если он случайно нажмет OK, он может отменить это).
Проблема в том, что кажется, что единственным событием, которое я мог бы обработать, было бы событие ValueChanged, и в итоге я получил бы такой код.
private bool ignoreValueChanged = false;
private void numFoobar_ValueChanged(object sender, EventArgs e)
{
if (ignoreValueChanged)
{
ignoreValueChanged = false;
return;
}
if (MessageBox.Show("This will erase the entire document. Are you sure?", "Confirmation", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
{
ignoreValueChanged = true;
numFoobar.Value = oldValue; // The ValueChanged event gets called again =/
return;
}
// More code
}
Должен быть лучший способ. Я надеялся, что проверка поможет, но она вызывается только при закрытии формы.