使用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事件中文本框无法接受数据?而时间输入控件却可以?

解决方案 »

  1.   

    是不是你在那个地方将那个数据NEW了一次啊,要不怎么可能没数据呢
      

  2.   

    没有啊。窗口加载时,load事件执行完就结束啦。
    DateTimePicker.Value = date1;时间可以显示出来。
    dasTextBox.Text = "1"; 文本框就显示不了。
    这说明没有new的动作,不然。DateTimePicker.Value 也应该没有时间显示。
      

  3.   

    问题解决this.tongjiBindingSource.AddNew();//统计表新增记录
    DateTimePicker.Value = date1;
    dasTextBox.Text = "1";
    最后要
    this.tongjiBindingSource.EndEdit();
    该方法将绑定的控件数据写入基础数据源,也就是BindingSource中。
    这样窗口打开后就会显示我们load事件中修改的数据。