窗体load事件中不能赋值

本文探讨了一个VB.NET程序中遇到的问题:在窗体Load事件中对控件赋值,以及与数据库控件交互时出现的异常情况。尽管语法无误,但在Load事件中对text控件赋值和更新数据库操作并未成功。作者发现将赋值操作移至Activated事件中可以解决问题,推测可能是因为在Load事件中数据库控件的执行顺序较晚。结论是窗体Load事件中不宜进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序如下:

   

 Private Sub retu_input_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        OleDb_retuinput_quest_retu.Fill(DataSet_retuinput_quest_retu1)
        Binding_retuinput_qeust_retu.AddNew()

 

        Tex_retu_input_saledate.Text = retu.saledate
        Tex_retu_input_customer.Text = retu.customer
        Tex_retu_input_saleprice.Text = retu.price
        Tex_retu_input_blno.Text = retu.blno
        Tex_retu_input_comid.Text = retu.comid
        tex_retuinput_retu_date.Text = Today.Date

        stop

 

        Dim comid As String
        comid = Tex_retu_input_comid.Text
        OleDb_retuinput_commodity.SelectCommand.CommandText = "select * from commodity where [com_id] like '%" + comid + "%'"
        OleDb_retuinput_commodity.Fill(DataSet_retuinput_commodity1)
        Pic_commodity.ImageLocation = Application.StartupPath + "/pictures/" + Tex_commodity_pic.Text


  End Sub

 

以上程序在语法上是没有错误的,而且在stop检查时各text控件都是有数据的,而且在下面的 comid 变量赋值及相应的检索操作都是正确的。但界面中的text框就是没有显示,而且如果在stop位置加上对OleDb_retuinput_quest_retu的数据库update操作会发现对数据库的数据添加都不成功(以上的text控件都绑定了OleDb_retuinput_quest_retu中的字段,正常情况下当text中的text属性变化时可以添加OleDb_retuinput_quest_retu中相应字段的数据。)

*其中的      tex_retuinput_retu_date.Text = Today.Date 这个可以正常显示

 

 

    后来把以上程序更改为:

 Private Sub retu_input_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Tex_retu_input_saledate.Text = retu.saledate
        Tex_retu_input_customer.Text = retu.customer
        Tex_retu_input_saleprice.Text = retu.price
        Tex_retu_input_blno.Text = retu.blno
        Tex_retu_input_comid.Text = retu.comid
        tex_retuinput_retu_date.Text = Today.Date

        Dim comid As String
        comid = Tex_retu_input_comid.Text
        OleDb_retuinput_commodity.SelectCommand.CommandText = "select * from commodity where [com_id] like '%"   + comid + "%'"
        OleDb_retuinput_commodity.Fill(DataSet_retuinput_commodity1)
        Pic_commodity.ImageLocation = Application.StartupPath + "/pictures/" + Tex_commodity_pic.Text

End Sub

   

 Private Sub retu_input_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        OleDb_retuinput_quest_retu.Fill(DataSet_retuinput_quest_retu1)
        Binding_retuinput_qeust_retu.AddNew()


 End Sub

 

也就是在窗体load事件后再active事件中才进行赋值就一切正常了,原因可能是窗体中的数据库控件在窗体load事件中的执行顺序是排在最后的,或者是在load完成后才能对数据库控件执行操作。导致了这种情况的出现。

   一句话就是在load事件中对数据库进行添加,更改等操作是不可行的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值