【问题标题】:Missing events in properties for VB6VB6 的属性中缺少事件
【发布时间】:2018-07-02 01:39:03
【问题描述】:

我是一名自学成才的业余 Visual Basic 程序员。我的节目是为我自己、朋友和一些非营利组织准备的。我有一种情况,我认为这相当简单,但似乎并非如此。

我有一个包含 6 个元素 (1 -6) 的文本框数组,名为“txtBilled”。当将值输入除元素 6 之外的任何元素时,我想将值添加到 1-5 中并将结果放入元素 6。我的问题开始是由于文本数组的属性不提供失去焦点选项。搜索 inter 提供了这很正常的陈述,其他人则说“失去焦点”应该始终存在。 作为第二种方法,我尝试使用 validate 元素。之前从未使用过这个,我在网上找到了一个如下的子。

Private sub  txtBilled__Validate(Cancel as Boolean)

发现 Validate 事件也不包含在数组的属性中 我在 Windows 10 下使用 VB6 版本 8176。 任何关于我做错了什么的理想将不胜感激。

【问题讨论】:

  • 如果txtBilled 是一个控件数组,那么它的事件子组件中应该有一个Index 参数。您是否从下拉列表中选择了_Validate 事件?如果是这样,提供的原型应该包括那个参数......就像_LostFocus 事件一样。
  • 同意@JimMack - 如果您实际上创建了一个真正的文本框数组,则应该将 LostFocus 事件与 Index 作为参数。如果单击每个文本框,您应该会看到数组索引作为每个控件名称的一部分,例如。 txtBilled(2)

标签: vb6


【解决方案1】:

您不能使用文本框数组的索引创建自己的 LostFocus 子吗?

Private Sub txtBilled_LostFocus(Index As Integer)
   Dim i As Integer    
   dim sngTotal As Single

   '  Calculate sum only if not in last textbox
   If Index <> uBound(txtBilled) Then
        For i = LBound(txtBilled) to UBound(txtBilled) - 1
            sngTotal = sngTotal + txtBilled(i)
        Next i 
        txtBilled(uBound(txtBilled)) = sngTotal
   End If

End Sub

【讨论】:

  • 您的示例中有一个错误 - 它正在添加所有文本框。应该是... To Ubound(txtBilled) -1
  • 很好的提货比尔。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 2018-12-31
相关资源
最近更新 更多