我正在使用Validating事件验证文本字段的输入,该字段是TextEdit类型。但错误图标显示在文本字段(第二张图片)之外,而不是在其中(第一张图片)。
我已经尝试过ErrorIconAlignment但它不起作用。图标仍在文本外显示。有没有其他方法可以在文本字段中显示它?
感谢。
答案 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