WPF Validating事件 替代办法。
来源:互联网 发布:c语言制表符 编辑:程序博客网 时间:2024/06/09 08:45
WPF 在Control控件上缺少 Validating事件 及 OnValidating虚函数。 需要在用户焦点 离开页面时,如果需要执行 “保存”操作,将会遇到问题。
以下是使用 “事件延迟” 的办法处理该问题:
IInputElement lastFouces; //一个临时变量
protected override void OnPreviewLostKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
System.Windows.Media.Visual atV = e.NewFocus as System.Windows.Media.Visual;
if (atV != null && !this.IsAncestorOf(atV))
{
lastFouces = e.NewFocus;
lastFouces.GotKeyboardFocus += new KeyboardFocusChangedEventHandler(NewFocus_GotKeyboardFocus);
}
base.OnPreviewLostKeyboardFocus(e);
}
void NewFocus_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
((IInputElement)sender).GotKeyboardFocus -= new KeyboardFocusChangedEventHandler(NewFocus_GotKeyboardFocus);
((IInputElement)sender).GotKeyboardFocus -= new KeyboardFocusChangedEventHandler(NewFocus_GotKeyboardFocus);
string error = CheckAndSavePage(); // 执行功能函数,返回错误信息。
if (!string.IsNullOrEmpty(error))
{
MessageBoxResult aMR = MessageBox.Show(error + "\r\n是否继续?\r\n点击“是”放弃修改,点击“否”继续编辑。", "输入错误", MessageBoxButton.YesNo, MessageBoxImage.Error);
if (aMR == MessageBoxResult.Yes)
{
this.RefreshData(); // 刷新页面,重新绑定
}
else
{
this.dgAra.Focus(); //继续停留在本页面, 如果lastFouces有焦点相关的事件处理函数,可能会出错。
return;
}
}
else
{
this.RefreshData();
}
}
- WPF Validating事件 替代办法。
- validating
- WPF Timer替代者
- C#"焦点事件"中的Validating处理方法
- C#"焦点事件"中的Validating处理方法
- C#中Validating和Validated事件
- C#中Validating和Validated事件
- 【转】C#中Validating和Validated事件
- C# TextBox中的Validating与Validated事件
- C# TextBox中的 Validating 与 Validated 事件
- C# TextBox中的Validating与Validated事件
- C# TextBox中的Validating与Validated事件
- C# TextBox中的Validating与Validated事件
- C# TextBox中的Validating与Validated事件
- C# TextBox中的Validating与Validated事件
- oralce函数wm_concat 替代办法
- wpf事件
- live事件替代写法
- linux中运行第一C++程序
- 修改飞凌OK6410的默认LCD显示设备
- Android学习笔记(四)-简单例子:电话拨号器与短信发送器
- 毕业奋斗八年成功后有感,给年轻人的10个忠告
- 创建一个SQL Azure数据库
- WPF Validating事件 替代办法。
- C6流程功能按钮参考解读
- 2012年C/C++ 颜色表代码
- 网页美工与网页优化不得不说的"故事"
- android:TabHost使用方法
- python mysqldb
- android 编译源码 错误解决
- NDK 之 准备(R7)
- python 线程 基础