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.";
    }
}

範囲外の値を変更してフォーカスを変更すると、メッセージ ボックスが 2 回表示されます。1 つは値を変更するためのもので、もう 1 つは表示を変更するためのものです。これは、エディターが値 (2 倍) を適切な科学的表示に表示するためです。

表示を変更するときに TextEdit (または上記の ButtonEdit の例) が検証をチェックしないようにするにはどうすればよいですか? そもそもいけないってことですよね?EditValue プロパティは変更されず、表示 (Text プロパティ) のみが変更されるためです。

前もって感謝します :)

4

1 に答える 1

0

このヘルプ記事 BaseEdit.InvalidValue イベントを確認してください。

私の知る限り、 Validating イベントを処理する必要があり、そのイベント内で値が正しくない場合は e.Cancel を true に設定し、InvalidValue イベント内で無効なエントリの視覚的な合図を提供できます。

お役に立てれば

于 2011-08-09T02:21:41.310 に答える