我需要做一个服务器端倒计时计时器只在秒:
这里是我的按钮,启动计时器:
public partial class _Default : Page
{
int counter = 0;
protected void Page_Load(object sender, EventArgs e)
{}
protected void Button2_Click(object sender, EventArgs e)
{
Timer1.Tick += Timer1_Tick;
Timer1.Interval = 1000; // 1 second
Timer1.Enabled = true;
Label1.Text = counter.ToString();
}
}
然后调用定时器控件:
protected void Timer1_Tick(object sender, EventArgs e)
{
counter = 150;
counter--;
if (counter == 0)
{
Timer1.Enabled = false;
}
Label1.Text = counter.ToString();
}
这是我的标记:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick"/>
</ContentTemplate>
</asp:UpdatePanel>
问题是,当我点击按钮,它停止在第一秒倒计时
我还想问,如果我可以使用StopWatch类作为countDown计时器,因为它在秒计数时更准确,如果你能给予我一个例子。..
1条答案
按热度按时间ctehm74n1#
首先,您是如何以及为什么会出现一个名为_Default的页面的?
我已经浏览了20年的网页-从来没有见过一个页面以下划线开头。
为什么你要为更新面板定义一个触发器?你不需要,也不想要。所以,把那个拿掉。
所以,让我们创建一个新的页面。
我们称之为CountDownTest。aspx
好了,我们首先拖进一个脚本管理器(更新面板总是需要它们的)。
然后我们可以降低我们的加价。
让我们有一分钟,然后秒倒计时。然后是开始按钮和停止按钮。
让我们使用一个“时间跨度”,因为你也问。
到目前为止,我们有这个:
假设我们安装了bootstrap。
然后让我们格式化一下我们的盒子。
所以我们有这个标记:
注意我们是如何将计时器控件设置为禁用的(在标记中是可以的)。
并注意如何停止按钮也禁用。
好了,我们后面的代码需要一个开始按钮事件、停止按钮事件和计时器滴答事件。
我们有这样的代码:
现在的效果是这样的: