private void ItemTreeList_ValidateNode(object sender, DevExpress.XtraTreeList.ValidateNodeEventArgs e)
{
IsNeedValidateNode = false;
if (string.IsNullOrEmpty(Item.Code)
|| string.IsNullOrEmpty(Item.Name))
{
e.ErrorText = "填写的数据不完整...";
e.Valid = false; //正常情况执行这一步会弹出一个窗口,显示e.ErrorText设置的文本,但是如果是通过
//ItemTreeList_Leave方法调用这个事件,或从其他地方调用ItemTreeList_ValidateNode
//则不弹出任何窗口
//这个控件的bug感觉还有不少,我启用ItemTreeList_Leave也是因为修改了当前行,然后切换到
//另一个控件时,它不执行ValidateNode事件
}
else
{
SaveCustomerDir(CurrentItem);
}
} /// <summary>
/// 是否需要验证ValidateNode事件(应付控件Bug临时办法)
/// </summary>
private bool IsNeedValidateNode = false; private void ItemTreeList_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
{
IsNeedValidateNode = true;
} /// <summary>
/// 焦点丢失
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ItemTreeList_Leave(object sender, EventArgs e)
{
if (IsNeedValidateNode)
{
ValidateNodeEventArgs ValidateNode = new ValidateNodeEventArgs(CurrentNode);
ItemTreeList_ValidateNode(sender, ValidateNode);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货