GUI Windows Form C#

/*
C# Programming Tips & Techniques
by Charles Wright, Kris Jamsa
Publisher: Osborne/McGraw-Hill (December 28, 2001)
ISBN: 0072193794
*/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Text;
namespace HexView
{
  /// 
  /// Summary description for Form1.
  /// 

  public class frmHexView : System.Windows.Forms.Form
  {
    private System.Windows.Forms.MainMenu mainMenu1;
    private System.Windows.Forms.MenuItem mnuFileMenu;
    private System.Windows.Forms.MenuItem mnuFileOpen;
    private System.Windows.Forms.MenuItem mnuFileClose;
    private System.Windows.Forms.MenuItem mnuFileExit;
    private System.Windows.Forms.MenuItem mnuAboutMenu;
    private System.Windows.Forms.MenuItem mnuAboutHexView;
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.OpenFileDialog openFileDialog1;
    /// 
    /// Required designer variable.
    /// 

    private System.ComponentModel.Container components = null;
    public frmHexView()
    {
      //
      // Required for Windows Form Designer support
      //
      InitializeComponent();
      //
      // TODO: Add any constructor code after InitializeComponent call
      //
      textBox1.BackColor = Color.White;
      this.openFileDialog1.Filter = "Text files (*.txt)|*.txt|Wide Character Files (*.wcs)|*.wcs|All Files (*.*)|*.*||";
      textBox1.Font = new Font ("Courier New", 12);
    }
    /// 
    /// Clean up any resources being used.
    /// 

    protected override void Dispose( bool disposing )
    {
      if( disposing )
      {
        if (components != null) 
        {
          components.Dispose();
        }
      }
      base.Dispose( disposing );
    }
    #region Windows Form Designer generated code
    /// 
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// 

    private void InitializeComponent()
    {
      this.mainMenu1 = new System.Windows.Forms.MainMenu();
      this.mnuFileMenu = new System.Windows.Forms.MenuItem();
      this.mnuFileOpen = new System.Windows.Forms.MenuItem();
      this.mnuFileClose = new System.Windows.Forms.MenuItem();
      this.mnuFileExit = new System.Windows.Forms.MenuItem();
      this.mnuAboutMenu = new System.Windows.Forms.MenuItem();
      this.mnuAboutHexView = new System.Windows.Forms.MenuItem();
      this.textBox1 = new System.Windows.Forms.TextBox();
      this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
      this.SuspendLayout();
      // 
      // mainMenu1
      // 
      this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                                            this.mnuFileMenu,
                                            this.mnuAboutMenu});
      // 
      // mnuFileMenu
      // 
      this.mnuFileMenu.Index = 0;
      this.mnuFileMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                                            this.mnuFileOpen,
                                            this.mnuFileClose,
                                            this.mnuFileExit});
      this.mnuFileMenu.Text = "File";
      // 
      // mnuFileOpen
      // 
      this.mnuFileOpen.Index = 0;
      this.mnuFileOpen.Text = "Open";
      this.mnuFileOpen.Click += new System.EventHandler(this.OnFileOpen);
      // 
      // mnuFileClose
      // 
      this.mnuFileClose.Index = 1;
      this.mnuFileClose.Text = "Close";
      this.mnuFileClose.Click += new System.EventHandler(this.OnFileClose);
      // 
      // mnuFileExit
      // 
      this.mnuFileExit.Index = 2;
      this.mnuFileExit.Text = "Exit";
      this.mnuFileExit.Click += new System.EventHandler(this.OnFileExit);
      // 
      // mnuAboutMenu
      // 
      this.mnuAboutMenu.Index = 1;
      this.mnuAboutMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                                             this.mnuAboutHexView});
      this.mnuAboutMenu.Text = "About";
      // 
      // mnuAboutHexView
      // 
      this.mnuAboutHexView.Index = 0;
      this.mnuAboutHexView.Text = "About HexView";
      this.mnuAboutHexView.Click += new System.EventHandler(this.OnAboutAbout);
      // 
      // textBox1
      // 
      this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill;
      this.textBox1.Multiline = true;
      this.textBox1.Name = "textBox1";
      this.textBox1.ReadOnly = true;
      this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
      this.textBox1.Size = new System.Drawing.Size(592, 317);
      this.textBox1.TabIndex = 0;
      this.textBox1.Text = "";
      this.textBox1.WordWrap = false;
      // 
      // frmHexView
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(592, 317);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                      this.textBox1});
      this.Menu = this.mainMenu1;
      this.Name = "frmHexView";
      this.Text = "Hex View";
      this.ResumeLayout(false);
    }
    #endregion
    /// 
    /// The main entry point for the application.
    /// 

    [STAThread]
    static void Main() 
    {
      Application.Run(new frmHexView());
    }
    byte [] Data;
    private void OnFileOpen(object sender, System.EventArgs e)
    {
      if (openFileDialog1.ShowDialog () == DialogResult.Cancel)
        return;
      FileStream strm;
      try
      {
        strm = new FileStream (openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
      }
      catch (Exception)
      {
        string str = "Cannot open " + openFileDialog1.FileName + " for reading";
        MessageBox.Show (str, "HexView");
        return;
      }
      if (Data != null)
        Array.Clear (Data, 0, Data.Length);
      Data = new Byte[strm.Length];
      strm.Read (Data, 0, (int) strm.Length);
      strm.Close();
      FillTextBox ();
      int index = openFileDialog1.FileName.LastIndexOf ('\\');
      this.Text = this.Text + " - " + openFileDialog1.FileName.Substring (index + 1);
    }
    private void FillTextBox ()
    {
      textBox1.Text = "";
      StringBuilder strb = new StringBuilder ();
      StringBuilder text = new StringBuilder ();
      char [] ch = new char [1];
      for (int x = 0; x < Data.Length; x += 16)
      {
        text.Length = 0;
        strb.Length = 0;
        for (int y = 0; y < 16; ++y)
        {
          if ((x + y) > (Data.Length - 1))
            break;
          ch[0] = (char) Data[x + y];
          strb.AppendFormat ("{0,0:X2} ", (int) ch[0]);
          if (((int) ch[0] < 32) || ((int) ch[0] > 127))
            ch[0] = '.';
          text.Append (ch);
        }
        text.Append ("\r\n");
        while (strb.Length < 52)
          strb.Append (" ");
        strb.Append (text.ToString());
        textBox1.Text += strb.ToString ();
      }
      textBox1.Select (0, 0);
    }
    private void OnFileClose(object sender, System.EventArgs e)
    {
      textBox1.Text = "";
      this.Text = "Hex View";
    }
    private void OnFileExit(object sender, System.EventArgs e)
    {
      Application.Exit ();
    }
    private void OnAboutAbout(object sender, System.EventArgs e)
    {
      About about = new About();
      about.ShowDialog();
    }
  }
  /// 
  /// Summary description for About.
  /// 

  public class About : System.Windows.Forms.Form
  {
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.Button button1;
    /// 
    /// Required designer variable.
    /// 

    private System.ComponentModel.Container components = null;
    public About()
    {
      //
      // Required for Windows Form Designer support
      //
      InitializeComponent();
      //
      // TODO: Add any constructor code after InitializeComponent call
      //
    }
    /// 
    /// Clean up any resources being used.
    /// 

    protected override void Dispose( bool disposing )
    {
      if( disposing )
      {
        if(components != null)
        {
          components.Dispose();
        }
      }
      base.Dispose( disposing );
    }
    #region Windows Form Designer generated code
    /// 
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// 

    private void InitializeComponent()
    {
      this.button1 = new System.Windows.Forms.Button();
      this.label1 = new System.Windows.Forms.Label();
      this.label2 = new System.Windows.Forms.Label();
      this.SuspendLayout();
      // 
      // button1
      // 
      this.button1.Location = new System.Drawing.Point(148, 112);
      this.button1.Name = "button1";
      this.button1.Size = new System.Drawing.Size(104, 24);
      this.button1.TabIndex = 2;
      this.button1.Text = "OK";
      this.button1.Click += new System.EventHandler(this.button1_Click);
      // 
      // label1
      // 
      this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
      this.label1.Location = new System.Drawing.Point(36, 16);
      this.label1.Name = "label1";
      this.label1.Size = new System.Drawing.Size(344, 56);
      this.label1.TabIndex = 0;
      this.label1.Text = "A Simple Hex Viewer";
      this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
      // 
      // label2
      // 
      this.label2.Location = new System.Drawing.Point(36, 80);
      this.label2.Name = "label2";
      this.label2.Size = new System.Drawing.Size(344, 16);
      this.label2.TabIndex = 1;
      this.label2.Text = "C# Tips and Techniques";
      this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
      // 
      // About
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(416, 149);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                      this.button1,
                                      this.label2,
                                      this.label1});
      this.Name = "About";
      this.Text = "About Hex View";
      this.ResumeLayout(false);
    }
    #endregion
    private void button1_Click(object sender, System.EventArgs e)
    {
      this.Close ();
    }
  }
  
}