Paramu1973 Ответов: 1

Как заставить секундомер - старт/стоп с label1.text?


Привет Я занимаюсь небольшим проектом. Согласно движениям мыши, секундомер должен быть запущен или остановлен.
т. е. как только мышь окажется внутри, то запустите секундомер, иначе остановитесь. Возможно ли это?
мои коды: страница aspx
<div id="Divn1" onmousemove="MyNewFunction(event)" onmouseout="ClearCoor()" style="width:99%; height:99%; border:solid;background-color:white; position:absolute;">
            <p id="Demo1"></p>
            <asp:Label ID="Label2" runat="server" Font-Size="XX-Large"></asp:Label>
            <div id="Divn2" style="width:50px;height:50px;border-radius:50%;background-color:brown; position:absolute; top:45%; margin-left:47%;">

            </div>
           <asp:scriptmanager ID="Scriptmanager1" runat="server"></asp:scriptmanager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
              <ContentTemplate>
                <asp:Label ID="Label1" runat="server" Font-Size="XX-Large"></asp:Label>
                <asp:Timer ID="tm1" Interval="1000" runat="server" ontick="tm1_Tick" />
              </ContentTemplate>
              <Triggers>
                <asp:AsyncPostBackTrigger ControlID="tm1" EventName="Tick" />
              </Triggers>
            </asp:UpdatePanel>

        </div>

А потом aspx. cs
public static Stopwatch sw;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            sw = new Stopwatch();
            sw.Start();
        }
    }
    protected void tm1_Tick(object sender, EventArgs e)
    {
        long milsecs = sw.Elapsed.Milliseconds;
        if (Label2.Text.Trim().Length > 0)
        {
            Label1.Text = DateTime.Now.ToString("00:ff");
        }
        sw.Stop();
        //Label1.Visible = false;
    }

Спасибо

Что я уже пробовал:

Попытался начать смотреть, пока мышь движется

F-ES Sitecore

Серверный код на самом деле не подходит для такого рода задач, вам лучше делать это на javascript. Кроме того, ваше использование "статики" для работы секундомера означает, что у всех, кто использует ваш сайт, есть один и тот же секундомер, и они будут начинать\останавливать друг друга, а это означает, что вы не получите желаемого результата. Это может сработать, когда только вы используете сайт, но это не сработает для других.

1 Ответов

Рейтинг:
10

Kornfeld Eliyahu Peter

Нет. Это невозможно таким образом...
В ASP.NET сервер и клиент настолько разделены, что сервер ничего не знает о положении мыши на клиенте, поэтому вы не можете использовать его в качестве индикатора...
Вы должны изучить программирование на стороне клиента (JavaScript), чтобы создать там секундомер и остановить/запустить его на событиях на стороне клиента (hover) метки...
Другой вариант-найти другой класс таймера (не тот, что от Microsoft) с возможностями на стороне клиента...


Paramu1973

Какие-нибудь примеры кодов или ссылок? Спасибо

Kornfeld Eliyahu Peter

Там, наверное, сотни тысяч-погуглите их...