Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用数据绑定写入Null/Nothing值_.net_Data Binding - Fatal编程技术网

.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项目中执行此操作?