_Q12_ Ответов: 2

- Как увеличить мой номер?


Я считаю время для фильма. Когда подсчет завершен, он увеличивается (linksNumer++;) до следующей ссылки в списке и щелкает по ней. Но! Внутри события linklabel_link clicked linksNumer каждый раз сбрасывается до значения 'i' (linksNumer = i;).
В принципе, он увеличивается в событии timer1_Tick, но в linklabel_link clicked событие сбрасывается обратно к последней нажатой (с помощью мыши) ссылке из списка со ссылками на form1.
Я боюсь, что этот код (из события таймера):
LinkLabelLinkClickedEventArgs ex = new LinkLabelLinkClickedEventArgs(ListLinksVisited[linksNumer].Links[0]);
linklabel_LinkClicked(sender, ex);

не влияет на 'e' из LinkLabelLinkClickedEventArgs из события linklabel_link clicked.
Я понятия не имею, как правильно на него повлиять.
Более корректно, влияет на ссылку, но затем она снова сбрасывается. Он загружает первые 2 ссылки, но возвращается к первой. Он переворачивается с 1,2, обратно на 1,2 и снова на 1,2. Вместо того, чтобы продолжать до 3,4...и т. д.
Спасибо.
Помните, В12.

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

int linksNumer = 0;
List<LinkLabel> ListLinksVisited = new List<LinkLabel>();
void linklabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    if (e.Link.LinkData.ToString() != "")
    {
        Process.Start(e.Link.LinkData.ToString());//opens new link in ma browser
        e.Link.Visited = true; //show in list that link is clicked

        //modify links visited.
        for (int i = 0; i < ListLinksVisited.Count; i++)
        {
            //compare the actual string links
            if (ListLinksVisited[i].Links[0].LinkData.ToString() == e.Link.LinkData.ToString())
            {
                linksNumer = i;
                ListLinksVisited[i].LinkVisited = true;
                ExtractTimeFromLink(ListLinksVisited[i].Text); timer1.Start();
                break;
            }
        }
    }
}

private void timer1_Tick(object sender, EventArgs e)
{
    if (DateTime.Now.Hour == TargetTime.Hour &
        DateTime.Now.Minute == TargetTime.Minute &
        DateTime.Now.Second == TargetTime.Second)
    {
        label1.Text = "done"; timer1.Stop();
        linksNumer++;
        LinkLabelLinkClickedEventArgs ex = new LinkLabelLinkClickedEventArgs(ListLinksVisited[linksNumer].Links[0]);
        linklabel_LinkClicked(sender, ex);
    }

    label1.Update();
}

2 Ответов

Рейтинг:
20

OriginalGriff

Без возможности запустить ваш код - а мы не можем - он становится комбинацией догадок и общих советов вместо решения, которое мы можем дать.

Я бы заподозрил эту линию:

if (ListLinksVisited[i].Links[0].LinkData.ToString() == e.Link.LinkData.ToString())
Вместо того, чтобы "не затрагивать букву" Е "" - потому что если это совпадает, linksNumber сбрасывается так, как вы описываете.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Если вы не знаете, как его использовать, то быстрый Google для "Visual Studio debugger" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


_Q12_

Thank you for your answer mister OriginalGriff. I know all about debugging and without it i couldn't reach so far (as a programmer). It's part of my programming skills, and im doing it automatically at this point. My problem, unfortunately, extends outside the debugging boundaries. My solution is to "minimize" the code in a completely new project,reproduce it, test it, make it cleaner, and hopefully find the problem. I know its a complex issue what i have here, but i still imagining that is a high level of stuff that i dont know yet and must be inserted in my code. I'm afraid is code i dont know, that is too advanced. Some weird method specific for some situation that i have there. That is why i asked this question here. But from your answer it might seem a -logical- problem, like i suspect it myself too and hope to be one. I will comeback with hopefully a cleaner code than what mess i have now.

_Q12_

I will delete this post because its quite weird. I was tired and i get stupid. But the fun fact is that you got it right, very luckily ! - why? because i edited manually some external files that this software was reading from, and there it was a double link that was read (correctly) but way before the expected line. [I] made that mistake in that file. Now when i correct it, it is awesome again and working perfectly. Very lucky that you intuit it, from that comparing line ! Also i listen to your advice to debug it in more depth than i did it previously. So i step into it with way more patience than before. I was rushing it i suppose. What a stupid mistake ! But you did give me great advice ! So, much respect. Live long :) (i hope you can read this before i delete it)

OriginalGriff

Всегда пожалуйста!

Рейтинг:
10

_Q12_

Можете ли вы удалить эту нить, которую я создал?
Я не вижу возможности удалить его.
Я помню, что это был значок мусорного ведра, чтобы сделать это, но теперь для нас, остальных, это больше не вариант.
Вот скриншот того места, где я его помню :
https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/281c49f0-e874-4b83-bff6-9bc6b8526d42/ddfay3j-c7147814-283e-484b-b4d8-eb4531b0f676.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOjdlMGQxODg5ODIyNjQzNzNhNWYwZDQxNWVhMGQyNmUwIiwiaXNzIjoidXJuOmFwcDo3ZTBkMTg4OTgyMjY0MzczYTVmMGQ0MTVlYTBkMjZlMCIsIm9iaiI6W1t7InBhdGgiOiJcL2ZcLzI4MWM0OWYwLWU4NzQtNGI4My1iZmY2LTliYzZiODUyNmQ0MlwvZGRmYXkzai1jNzE0NzgxNC0yODNlLTQ4NGItYjRkOC1lYjQ1MzFiMGY2NzYuanBnIn1dXSwiYXVkIjpbInVybjpzZXJ2aWNlOmZpbGUuZG93bmxvYWQiXX0.qG4mK73L17aGB6sjimj3-tnJjwLJVxBhB9bGGgQ0wMs[^]
Спасибо.


phil.o

Подлинные вопросы не должны быть удалены. Они могут быть полезны для некоторых других членов.

CHill60

Если вы наведете курсор мыши на свой пост должен появиться значок корзины

_Q12_

спасибо @CHill60 , но я вижу, что только для [решения] я получаю эту опцию удаления. Я хотел его для главного вопроса! Нет такого варианта для нас, людей. Брррр ... Но, как сказал @phil.o, возможно, это хорошо для некоторых других участников, чтобы увидеть, какие глупости я написал (иногда). хе-хе