Ваш код выше загружает , поэтому он не может получить событие DownloadProgressChanged .
Правило - все асинхронные методы Download или Upload вызывают соответствующие события, измененные в ходе процесса Download или Upload. Под сценой UploadStringAsync использует тот же код, что и UploadDataAsync (поскольку строка представляет собой массив байтов по модулю кодировки символов).
Не асинхронные методы не вызывают события прогресса.
Если вам нужен доступ к базовому WebRequest, просто создайте класс, производный от WebClient, и переопределите защищенный виртуальный метод GetWebRequest (адрес Uri) , например:
public class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
// do something with the request
// BTW, this is how you can change timeouts or use cookies
return request;
}
}
Обратите внимание, что вы также можете использовать более современный класс HttpClient (полностью кроссплатформенный, фреймворк и т. Д.) Вместо WebClient.
Код, чтобы сделать так довольно прост:
Sub SurroundWithStrongTag()
DTE.ActiveDocument.Selection.Text = "<strong>" + DTE.ActiveDocument.Selection.Text + "</strong>"
End Sub
Теперь, если Вы не знаете много о макросах, вот то, как добавить его:
Сцеплять макрос до кнопки:
Dim HTMLprops As Properties = DTE.Properties("Texteditor", "HTML Specific")
Dim aProp As EnvDTE.Property = HTMLprops.Item("AutoInsertCloseTag")
aProp.Value = False