.net 使用数据绑定写入Null/Nothing值
我扩展了一个.net 使用数据绑定写入Null/Nothing值,.net,data-binding,.net,Data Binding,我扩展了一个MaskedTextBox组件来添加一些功能。扩展的MaskedTextBox的文本属性绑定到DateTime?属性,绑定格式设置为时间格式“HH:mm:ss”(即24小时时间)。因此,此蒙版文本框将捕获一次显示 我添加的额外功能是使组件只读,除非双击组件或按下enter按钮(控件的背景色有助于通知用户组件是否锁定/只读)。当按下enter按钮时,我也会挂起绑定,以便更新绑定数据,用户输入不会丢失。然后,当用户再次按下enter键时,信息被写回值,数据绑定恢复 到目前为止,所有这些都
MaskedTextBox
组件来添加一些功能。扩展的MaskedTextBox
的文本属性绑定到DateTime?
属性,绑定格式设置为时间格式“HH:mm:ss”(即24小时时间)。因此,此蒙版文本框将捕获一次显示
我添加的额外功能是使组件只读,除非双击组件或按下enter按钮(控件的背景色有助于通知用户组件是否锁定/只读)。当按下enter按钮时,我也会挂起绑定,以便更新绑定数据,用户输入不会丢失。然后,当用户再次按下enter键时,信息被写回值,数据绑定恢复
到目前为止,所有这些都可以正常工作,按照预期写入和显示值
但是,如果用户在按enter键提交新值时没有输入任何文本(或无效文本,但我们还是不要输入文本),我还想将null
或nothing
值写入DateTime?
属性
与MaskedTextBox
中的其他有效条目不同,如果执行时未输入文本:
Me.DataBindings("Text").WriteValue()
(当“锁定”MaskedTextBox
时),当我进入调试器中的每一行代码时,它会分支到绑定属性Get方法(与具有其他有效项的Set方法相反)
如果在MaskedTextBox
中未输入文本“”,如何将此null/nothing/“”值写入DateTime?
属性
谢谢你的帮助 为了操作绑定控件中显示并保存在绑定属性中的值,您需要处理绑定的格式和解析事件。下面是一个简单的示例代码:
maskedTextBox1.DataBindings.Add("Text", bindobj, "Time");
maskedTextBox1.DataBindings[0].Parse += new ConvertEventHandler(Form1_Parse);
maskedTextBox1.DataBindings[0].Format += new ConvertEventHandler(Form1_Format);
void Form1_Format(object sender, ConvertEventArgs e)
{
if (e.Value == null)
e.Value = "Null";
}
private void Form1_Parse(object sender, ConvertEventArgs e)
{
DateTime d;
if (DateTime.TryParse(e.Value.ToString(), out d))
e.Value = d;
else
e.Value = null;
}
private void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
maskedTextBox1.DataBindings[0].WriteValue();
}
为了操作在绑定控件中显示并保存在绑定属性中的值,您需要处理绑定的格式和解析事件。下面是一个简单的示例代码:
maskedTextBox1.DataBindings.Add("Text", bindobj, "Time");
maskedTextBox1.DataBindings[0].Parse += new ConvertEventHandler(Form1_Parse);
maskedTextBox1.DataBindings[0].Format += new ConvertEventHandler(Form1_Format);
void Form1_Format(object sender, ConvertEventArgs e)
{
if (e.Value == null)
e.Value = "Null";
}
private void Form1_Parse(object sender, ConvertEventArgs e)
{
DateTime d;
if (DateTime.TryParse(e.Value.ToString(), out d))
e.Value = d;
else
e.Value = null;
}
private void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
maskedTextBox1.DataBindings[0].WriteValue();
}
如何在VB.Net项目中执行此操作?如何在VB.Net项目中执行此操作?