title: How to take screenshot of webpage in C#
body: <p>I am totally new to C# coding - I am trying to take screen shots of webpages whose URLs are initially picked up form a notepad uploaded on the same form.</p>
  
  <p>As I read through the documentation on the <code>web_browser</code> control in MSDN.. I did arrive at the following code - yet when I run, I only get white screens</p>
  
  <p>I tried uploading a <code>.txt</code> with (google/yahoo URLs as test data in 2 lines)</p>
  
  <p>Can someone please say what more should I take care apart from handling which should get what I want as I read in MSDN.</p>
  
  <p>P.S: pls forgive if I'm terribly wrong in coding style .. as aforesaid I'm just starting my C# coding :)</p>
  
  <p>Code that I tried...</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Linq;
  using System.Text;
  using System.Windows.Forms;
  
  namespace MSDN_wbc_tut1
  {
      public partial class Form1 : Form
      {
          public int temp = 0;
  
          public Form1()
          {
              InitializeComponent();
          }
  
          private void Form1_Load(object sender, EventArgs e)
          {
  
          }
  
          private void FileUploadButton1_Click(object sender, EventArgs e)
          {
              //once a file is uploaded i want Pgm to read contents &amp; browse them as URLS
  
              OpenFileDialog openFileDialog = new OpenFileDialog();
              openFileDialog.CheckFileExists = true;
              openFileDialog.AddExtension = true;
              openFileDialog.Multiselect = true;
  
              //Filtering for Text files alone
              openFileDialog.Filter = "text files (*.txt)|*.txt";
  
              //if file is selected we must then do our coding part to proceed hecneforth
  
              if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
              {
                  //my code to say pgm wat to do once upload done...
  
                  //Getting my Chosen file's name
                  string Fileuploaded = openFileDialog.FileName;
  
                  //Read all line opens files - reads till EOF &amp; closes ,prevents a while condition
                  string[] FileuploadedContent = System.IO.File.ReadAllLines(Fileuploaded);
  
                  foreach (string s in FileuploadedContent)
                  {
                      NavigateContent(s);
                  }
              }
          }
  
          private void NavigateContent(string lineasurl)
          {
              // Add an event handler that images the document after it loads.
  
              try
              {
                  webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler
                  (takescreen);
                  webBrowser1.Navigate(new Uri(lineasurl));
                  //webBrowser1.Navigate(lineasurl); also works
  
              }                
              catch (System.UriFormatException)
              {
                  return;
              }
          }
  
          private void takescreen(object sender, WebBrowserDocumentCompletedEventArgs e)
          {
              //specifying sample values for image or screenshot size
              int x = 600, y = 700;
              Bitmap bitmap = new Bitmap(x, y);
              webBrowser1.DrawToBitmap(bitmap, new Rectangle(0, 0, x, y));
  
              //to give each screen a unique name - i append some no onto it
              temp = temp + 1;
  
              string TempFname = "Screenshotref" + temp.ToString() + "." + "jpg";
              bitmap.Save(TempFname);
          }
      }
  }
  </code></pre>