所以我想不计算在文本字段中输入了多少个字母/数字 但是有多少次进入了这个领域本身,我想只是让我的“计算”按钮点击计数,但这仍然允许某个人只需点击按钮,它就会向计数器+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 目前,我学会了如何使计数器功能起作用。
有人可以帮我建议我如何做到这一点吗?
答案 0 :(得分:0)
WebForms应用程序可以使用TextChanged
控件的TextBox
事件处理程序来检测值何时被修改。每次更改字段时,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
答案 1 :(得分:-1)
如果我没弄错的话,只要应用程序运行,你想让计数器继续运行,对吧?
最简单的方法之一是在表单上创建一个文本框(如果需要,可以通过将Visible
属性设置为“False&#39;”来隐藏,让我们调用它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
这应该适合你。