使用BindingSource和BindingNavigator创建了一个使用文本框的数据编辑窗体。
为了在窗体打开时创建一个新纪录,并且在其中一个文本框中默认一个数值。所以我在窗体加载事件中写了如下代码 private void FrmJieZhang_Load(object sender, EventArgs e)
{
this.tongjiBindingSource.AddNew();//统计表新增记录
DateTimePicker.Value = date1;
dasTextBox.Text = "1";
}
但是结果是DateTimePicker这个时间输入控件可以接收一个时间,并且显示出来。但是文本框却无法接收任数据,打开窗口后改控件显示为空。通过调试跟踪观察,在load事件执行中,dasTextBox是接收到了"1",但是显示页面后,这个"1"就不见了?另外我还做了一个实验,在页面用一个按钮来执行上面的代码。结果是dasTextBox.Text 可以接收并显示"1"。
还有,我将load事件中的tongjiBindingSource.AddNew();注释后。dasTextBox.Text 也可以接收并显示"1"。
情况很明显dasTextBox.Text与tongjiBindingSource绑定了,所以它会被tongjiBindingSource控制。问题是为什么在load事件中文本框无法接受数据?而时间输入控件却可以?
为了在窗体打开时创建一个新纪录,并且在其中一个文本框中默认一个数值。所以我在窗体加载事件中写了如下代码 private void FrmJieZhang_Load(object sender, EventArgs e)
{
this.tongjiBindingSource.AddNew();//统计表新增记录
DateTimePicker.Value = date1;
dasTextBox.Text = "1";
}
但是结果是DateTimePicker这个时间输入控件可以接收一个时间,并且显示出来。但是文本框却无法接收任数据,打开窗口后改控件显示为空。通过调试跟踪观察,在load事件执行中,dasTextBox是接收到了"1",但是显示页面后,这个"1"就不见了?另外我还做了一个实验,在页面用一个按钮来执行上面的代码。结果是dasTextBox.Text 可以接收并显示"1"。
还有,我将load事件中的tongjiBindingSource.AddNew();注释后。dasTextBox.Text 也可以接收并显示"1"。
情况很明显dasTextBox.Text与tongjiBindingSource绑定了,所以它会被tongjiBindingSource控制。问题是为什么在load事件中文本框无法接受数据?而时间输入控件却可以?
DateTimePicker.Value = date1;时间可以显示出来。
dasTextBox.Text = "1"; 文本框就显示不了。
这说明没有new的动作,不然。DateTimePicker.Value 也应该没有时间显示。
DateTimePicker.Value = date1;
dasTextBox.Text = "1";
最后要
this.tongjiBindingSource.EndEdit();
该方法将绑定的控件数据写入基础数据源,也就是BindingSource中。
这样窗口打开后就会显示我们load事件中修改的数据。