Невозможно вызвать метод C # - имя «отправитель» не существует в текущем контексте - PullRequest
1 голос
/ 26 июня 2011

У меня есть метод, который пытается выполнить событие / метод (Download_Click), хотя по какой-то причине я получаю:

Имя «отправитель» не существует в текущем контексте Имя 'e' не существует в текущем контексте

Кнопка определенно существует, хотя по какой-то причине в моем коде она не работает:

private void checkver()
{
    FileInfo sourceFile = new FileInfo("download.zip");
    if (sourceFile.Exists)
    {
        var request = (HttpWebRequest)WebRequest.Create(@"http://www.google.com/download.zip");
        request.Method = "HEAD";
        var response = (HttpWebResponse)request.GetResponse();

        if (response.LastModified > sourceFile.LastWriteTime)
        {
            MessageBox.Show("File outdated");
            Download_Click(sender, e);
            // use response.GetStream() to download the file.
        }
        else
        {
            MessageBox.Show("File in date");
        }

    }

}

Ответы [ 3 ]

5 голосов
/ 26 июня 2011

Вы получаете это сообщение, потому что в вашей функции нет такой переменной с именем sender (и нет такой переменной с именем e).

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

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

2 голосов
/ 26 июня 2011

Адам Робинсон ответ правильный - но если вы действительно очень хотите сделать этот звонок (нет, пожалуйста, не надо) (я имею в виду, ДЕЙСТВИТЕЛЬНО, НЕ) вы можете использовать

Download_Click(new object(), new System.EventArgs());
0 голосов
/ 26 июня 2011

Похоже, вы пытаетесь программно вызвать событие нажатия кнопок.отправитель и е не существуют в этом контексте.Вы можете вызвать событие click таким образом.

Download_Click(this, new EventArgs());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...