これはサンプルコードである:なぜtextedit検証ハンドラが2回呼び出されますか?
ButtonEdit be = new ButtonEdit()
{
DisplayFormatString = MyDisplayFrm,
MaskType = MaskType.RegEx,
Mask = "[-+]?([0-9]*[,.])?[0-9]+([eE][-+]?[0-9]+)?",
ValidateOnTextInput = false
};
Binding bindingValue = new Binding() { Source = PropItem, Path = new PropertyPath("Value"), Mode = BindingMode.TwoWay };
BindingOperations.SetBinding(be, ButtonEdit.EditValueProperty, bindingValue);
be.SetValue(Grid.ColumnProperty, 0);
be.Validate += be_Validate;
void be_Validate(object sender, ValidationEventArgs e)
{
if ((Convert.ToDouble(e.Value) <= MaxVal) && (Convert.ToDouble(e.Value) >= MinVal)) return;
MessageBoxResult mbr = MessageBox.Show("The value in not in the suggested range, do you want to continue?", "Min/Max Range validation", MessageBoxButton.YesNo);
if (mbr == MessageBoxResult.Yes)
{
return;
}
else
{
e.IsValid = false;
e.ErrorType = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning;
e.ErrorContent = "Value is not in the suggested range. Please correct.";
}
}
iが範囲外の値を変更し、フォーカスを変更すると、私は二回のメッセージボックスを受け取ります。 1つは値を変更するためのもの、もう1つはディスプレイを変更するためのものです。エディタは適切な科学ディスプレイに値(2倍)を表示するためです。
表示を変更するときに、テキストエディット(または上記のButtonEditの例)で確認を確認しないようにするにはどうすればよいですか?私はそれが最初の場所ではないはずですか? EditValueプロパティは変更されず、表示(Textプロパティ)のみが変更されます。事前に
感謝:)
に役立ちます。 – AussieALF