在TextEdit中设置字符串,只允许使用int

时间:2012-10-24 12:38:02

标签: c# textbox devexpress

我正在使用DevExpress。 在我的项目中,我有控制(textEdit),其中EditValue被绑定到“int”类型的属性。 问题是控制只允许输入数字。

我的任务是:当表单处于编辑模式时,textEdit应该显示单词“Automatic”,并且只有在按下安全按钮后才会生成数字。 现在在编辑模式下,文本框显示“0”,是否可以在“0”的情况下显示“自动”。

有一个属性,textBox绑定到该属性:

int fEventNr;
public int EventNr {
    get { return fEventNr; }
    set { SetPropertyValue<int>("EventNr", ref fEventNr, value); }
}

一切正常,除了显示“0”,我不知道如何让他显示“自动” 也许有人有任何想法?

3 个答案:

答案 0 :(得分:0)

这是解决您问题的方法:

textEdit1.Properties.CustomDisplayText += new Properties_CustomDisplayText;


void Properties_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
    if (yourCondition)
        e.DisplayText = "Automatic";
} 

答案 1 :(得分:0)

txtEdit.Properties.NullText = "Automatic";
txtEdit.EditValue = null;

考虑将public int EventNr更改为public int? EventNr,以便在EditValue为空时可以确保用户没有提供任何值,并且您应该生成它&#34;自动&#34; aly: ) 我认为将0视为[未设置值]是一种不好的做法。这就是他们发明null的原因。

答案 2 :(得分:0)

在属性面板上,转到属性 - &gt; Mask . Set "MaskType" to RegEx并将"EditMask"设置为\d*。如果您不希望整数以零开头,则将"EditMask"设置为[1-9]+\d*。 或者你可以通过代码来完成:

this.textEditIntegersOnly.Properties.Mask.EditMask = "[1-9]+\\d*";
this.textEditIntegersOnly.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx;