【问题标题】:Devexpress Mask for a TextEdit文本编辑的 Devexpress 掩码
【发布时间】:2019-08-11 17:06:35
【问题描述】:

我正在使用 Devexpress

当我希望用户有 2 个日期时,我有一个 TextEdit,如下所示:

dd/MM/yyyy - dd/MM/yyyy(例如:02/12/2011-03/09/2013)

我已尝试按上述方式设置掩码,但无法正常工作。

【问题讨论】:

    标签: devexpress


    【解决方案1】:

    可以设置掩码:

    textEdit.Properties.Mask.MaskType = MaskType.Simple;
    textEdit.Properties.Mask.EditMask = "00/00/0000-00/00/0000";
    

    但是,TextEdit 只能有一个 EditValue 属性,因此它不允许您存储两个 DateTime 值。

    您可以使用 Validating 事件添加自定义验证:

    private void TextEdit_Validating(object sender, CancelEventArgs e)
    {
        string textValue = (string)(sender as TextEdit).EditValue;
        var dates = textValue?.Split('-').Select(x => { DateTime.TryParse(x, out DateTime result); return result; });
        if (dates == null || dates.Any(x => x == null))
        {
            e.Cancel = true;
        }
    }
    

    但是看起来很乱,所以我建议你改用两个 DateEdit 控件。

    【讨论】:

    • 请注意,DateEdit 还允许选择日期范围,因此您不一定需要使用 2。
    • @brendon 我将 dateEdit 选择模式设置为 Multiple ,但在运行时我不知道如何选择 2 个日期
    • 如果您想在运行时以编程方式执行此操作,请设置 DateEdit 的 SelectedRanges 属性
    • @brendon 不,我希望用户能够选择一个日期范围,这个范围应该稍后保存在数据库中。
    • 用户只需点击一个日期,然后将光标拖动到结束日期。如果已经选择了一个日期,在按住 SHIFT 键的同时单击另一个日期也将选择该范围。正如上面@Maxim 所建议的那样,听起来使用 2 个 DateEdit 控件对您来说可能更容易。
    猜你喜欢
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    相关资源
    最近更新 更多