2017-01-25 2 views
1

В загрузки случае моего кода у меня есть эти две строки:Как я могу изменить часть текста текста richTextBox?

RichTextBoxExtensions.AppendText(richTextBox1, "Downloading: ", Color.Red); 
RichTextBoxExtensions.AppendText(richTextBox1, url, Color.Green); 

часть кода

int count = 0; 
     private void DownloadFile() 
     { 
      if (_downloadUrls.Any()) 
      { 
       WebClient client = new WebClient(); 
       client.DownloadProgressChanged += client_DownloadProgressChanged; 
       client.DownloadFileCompleted += client_DownloadFileCompleted; 

       var url = _downloadUrls.Dequeue(); 

       client.DownloadFileAsync(new Uri(url), @"C:\Temp\New folder (13)\" + count + ".txt"); 
       RichTextBoxExtensions.AppendText(richTextBox1, "Downloading: ", Color.Red); 
       RichTextBoxExtensions.AppendText(richTextBox1, url, Color.Green); 
       richTextBox1.AppendText(Environment.NewLine); 
       count++; 
       countCompleted--; 
       label1.Text = countCompleted.ToString(); 
       return; 
      } 

      // End of the download 
      btnStart.Text = "Download Complete"; 
     } 

     private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) 
     { 
      if (e.Error != null) 
      { 
       // handle error scenario 
       throw e.Error; 
      } 
      else 
      { 

      } 
      if (e.Cancelled) 
      { 
       // handle cancelled scenario 
      } 
      DownloadFile(); 
     } 

Что я хочу сделать, это каждый раз, когда загрузка файла завершена, это в завершенном мероприятии измените часть «Загрузка:» на «Скачан:» и всю строку.

Класс RichTextBoxExtensions

public class RichTextBoxExtensions 
     { 
      public static void AppendText(RichTextBox box, string text, Color color) 
      { 
       box.SelectionStart = box.TextLength; 
       box.SelectionLength = 0; 

       box.SelectionColor = color; 
       box.AppendText(text); 
       box.SelectionColor = box.ForeColor; 
      } 
     } 

ответ

0

Вот что вы спросили:

public static class RichTextBoxExtensions 
{ 
    public static void AppendText(this RichTextBox box, string text, Color color) 
    { 
     box.SelectionStart = box.TextLength; 
     box.SelectionLength = 0; 

     box.SelectionColor = color; 
     box.AppendText(text); 
     box.SelectionColor = box.ForeColor; 
    } 
    public static void UpdateText(this RichTextBox box, string find, string replace, Color? color) 
    { 
     box.SelectionStart = box.Find(find, RichTextBoxFinds.Reverse); 
     box.SelectionLength = find.Length; 
     box.SelectionColor = color ?? box.SelectionColor; 
     box.SelectedText = replace; 
    } 
} 

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

richTextBox1.AppendText("Downloading: ", Color.Red); 
richTextBox1.AppendText("qwe", Color.Green); 

// ... 

richTextBox1.UpdateText("Downloading: ", "Downloaded: ", Color.Green); 
Смежные вопросы