Mega Code Archive

 
Categories / C# / GUI Windows Form
 

Hex View

/* 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>   /// Summary description for Form1.   /// </summary>   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;     /// <summary>     /// Required designer variable.     /// </summary>     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);     }     /// <summary>     /// Clean up any resources being used.     /// </summary>     protected override void Dispose( bool disposing )     {       if( disposing )       {         if (components != null)          {           components.Dispose();         }       }       base.Dispose( disposing );     }     #region Windows Form Designer generated code     /// <summary>     /// Required method for Designer support - do not modify     /// the contents of this method with the code editor.     /// </summary>     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     /// <summary>     /// The main entry point for the application.     /// </summary>     [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>   /// Summary description for About.   /// </summary>   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;     /// <summary>     /// Required designer variable.     /// </summary>     private System.ComponentModel.Container components = null;     public About()     {       //       // Required for Windows Form Designer support       //       InitializeComponent();       //       // TODO: Add any constructor code after InitializeComponent call       //     }     /// <summary>     /// Clean up any resources being used.     /// </summary>     protected override void Dispose( bool disposing )     {       if( disposing )       {         if(components != null)         {           components.Dispose();         }       }       base.Dispose( disposing );     }     #region Windows Form Designer generated code     /// <summary>     /// Required method for Designer support - do not modify     /// the contents of this method with the code editor.     /// </summary>     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 ();     }   }    }