【问题标题】:How to make a counter in Visual Basic如何在 Visual Basic 中制作计数器
【发布时间】:2015-04-04 18:23:21
【问题描述】:

所以我不想计算在文本字段中输入了多少字母/数字 但是有多少次东西已经被输入到该字段本身,我想只是让我的“计算”按钮成为点击计数,但这仍然允许一些人只需点击按钮,它会 +1 到计数器没有任何内容场。所以我想知道是否有办法做到这一点,您必须在字段中输入文本才能添加到计数器。

这是我目前所拥有的:

Private Sub CalculateButton_Click(sender As System.Object, e As System.EventArgs) Handles CalculateButton.Click
    Answer = Minutes * TIME_RATE
    TotalChargeBox.Text = Answer.ToString("N")
    NumGroupsBox.Text= Counter.ToString("N")
    AvgAns = Answer / Counter
    AvggroupBox.Text = AvgAns.ToSting("N")

一切正常,但是当我点击计算时,NumGroupsBox 只会显示 0 目前,直到我学习如何让计数器功能工作。

有人可以帮我告诉我如何去做吗?

【问题讨论】:

  • 尽管您已尽力解释问题,但您仍然没有提供足够的信息让我们帮助您。请改写问题。截至目前:我们不知道您要完成什么
  • 从您的源示例中猜测,这不是VB6 代码,而是VB.Net 代码。请相应地标记。

标签: vb.net visual-studio-2012


【解决方案1】:

WebForms 应用程序可以使用TextBox 控件的TextChanged 事件处理程序来检测值何时被修改。每次更改字段时,Web 浏览器都会向 Web 服务器发送PostBack,并且可以计算“更改计数”。这是一个超基本的例子:

ASPX 页面:

Enter value:
<asp:TextBox ID="TrackedField" runat="server" AutoPostBack="true" />
<hr />
This field has been changed
<asp:Label ID="TimesChanged" runat="server" Text="Enter value" />
times.

ASPX.VB 页面:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If ViewState("TimesChanged") Is Nothing Then ViewState("TimesChanged") = 0
End Sub

Protected Sub Page_PreRender(sender As Object, e As EventArgs) Handles Me.PreRender
    TimesChanged.Text = DirectCast(ViewState("TimesChanged"), Integer).ToString()
End Sub

Protected Sub TrackedField_TextChanged(sender As Object, e As EventArgs) Handles TrackedField.TextChanged
    ViewState("TimesChanged") = DirectCast(ViewState("TimesChanged"), Integer) + 1
End Sub

【讨论】:

    【解决方案2】:

    如果我没记错的话,只要应用程序正在运行,您就希望计数器保持运行,对吗? 最简单的方法之一是在表单上创建一个文本框(如果需要,可以通过将Visible 属性设置为“False”来隐藏它),我们称之为txtCounter。

    在初始化表单(FormShown 事件)时,您会将计数器(最有可能为零)初始化为 `txtcounter.Text = 0。然后是您的 Click 事件,您可以像现在一样维护它;

    Private Sub CalculateButton_Click(sender As System.Object, e As System.EventArgs) Handles CalculateButton.Click
    
        ' Increment counter
        Counter = CInt(Counter.text) + 1
    
        Answer = Minutes * TIME_RATE
        TotalChargeBox.Text = Answer.ToString("N")
        NumGroupsBox.Text= Counter
        AvgAns = Answer / Counter
        AvggroupBox.Text = AvgAns.ToSting("N")
    
        ' Re-assign to textbox
        Counter.text = Counter.ToString
    

    这应该适合你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多