错误要在文本框中显示的图标

时间:2016-04-22 00:49:09

标签: devexpress devexpress-windows-ui

我正在使用Validating事件验证文本字段的输入,该字段是TextEdit类型。但错误图标显示在文本字段(第二张图片)之外,而不是在其中(第一张图片)。

我已经尝试过ErrorIconAlignment但它不起作用。图标仍在文本外显示。有没有其他方法可以在文本字段中显示它?

enter image description here

感谢。

1 个答案:

答案 0 :(得分:1)

没有允许这样做的属性。

但您可以使用以下代码执行此操作: 我创建了2个按钮,1 setErrorButton用于设置错误,第2个按钮用SetError方法清除错误,不需要的方法CreatePictureEdit

private void setErrorButton_Click(object sender, EventArgs e)
{
    SetError(textEdit1, "Error1");
    textEdit1.Properties.MaskBoxPadding = new Padding(12, 0, 0, 0); //to put the cursor after the error image
}

private void clearErrorButto_Click(object sender, EventArgs e)
{
    SetError(textEdit1, "");
    textEdit1.Properties.MaskBoxPadding = new Padding(0, 0, 0, 0);
}

public static void SetError(Control ctrl, string errorText)
{
    Form f = ctrl.FindForm();
    if (errorText == string.Empty)
    {
        if (ctrl.Tag != null && ctrl.Tag is PictureEdit)
        {
            f.Controls.Remove(ctrl.Tag as PictureEdit);
            return;
        }
        else
            return;
    }
    PictureEdit edit = CreatePictureEdit(ctrl, errorText);
    f.Controls.Add(edit);
    ctrl.Tag = edit;
    edit.BringToFront();

}

private static PictureEdit CreatePictureEdit(Control ctrl, string errorText)
{
    PictureEdit edit = new PictureEdit();
    Image image = BaseEdit.DefaultErrorIcon;
    edit.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
    edit.BackColor = Color.Transparent;
    edit.Image = image;
    edit.ToolTip = errorText;
    edit.ToolTipIconType = DevExpress.Utils.ToolTipIconType.Error;
    edit.Properties.SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Squeeze;
    edit.Location = new Point(ctrl.Bounds.Left + 3, ctrl.Bounds.Y + 1);
    edit.Size = new Size(image.Width, ctrl.Bounds.Height - 2);
    edit.BackColor = Color.White;
    return edit;
}

如果未在TextEdit

上正确调整图标,则可以更改图片的位置属性值和大小