You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB中如何从自定义类中将变量值写入窗体文本框

问题原因

  • VB.NET中方法参数默认是ByVal(按值传递),你传入的txttotal.Text是字符串类型的值副本,在OrderTotal方法内修改total参数的操作只会修改本地临时变量,完全不会回写到窗体的文本框属性上,所以界面看不到变化。
  • 原方法中total = fullamount写在循环内部,属于冗余操作,只需要循环结束计算完总金额后赋值一次即可。
  • 业务类直接操作UI控件属于强耦合设计,本身也不符合代码分层规范。

最优解决方案:改为返回值的Function实现

这种方案把计算逻辑和UI操作分离,order类只需要负责计算总额,不需要关心结果要赋值给哪个控件,复用性更强。

修改后的order类方法代码:

Public Function OrderTotal() As Decimal
    Dim fullamount As Decimal = 0
    For Each item As MenuItem In Items
        fullamount += CDec(item.Cost)
    Next
    Return fullamount
End Function

修改后的调用代码:

Dim order1 As New order
order1.AddItem(menuItem)
' 直接拿到返回值赋值给文本框即可,还可以按需格式化,比如.ToString("C")转为货币格式
txttotal.Text = order1.OrderTotal().ToString()

其他可实现但不推荐的方案

如果一定要用Sub实现,可以把参数改为ByRef(按引用传递),但这种写法耦合度高,不建议在正式项目中使用:

' 方法定义加ByRef关键字
Public Sub OrderTotal(ByRef total As String)
    Dim fullamount As Decimal = 0
    For Each item As MenuItem In Items
        fullamount += CDec(item.Cost)
    Next
    total = fullamount.ToString()
End Sub

内容的提问来源于stack exchange,提问作者Hamza Asim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:48:04