using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO; using System.Runtime.Serialization.Formatters.Binary; public class mainForm : System.Windows.Forms.Form { private System.Windows.Forms.MenuItem menuItemClear; private System.Windows.Forms.MenuItem menuItemOpen; private System.Windows.Forms.MenuItem menuItemSave; private System.Windows.Forms.MenuItem menuItemExit; private System.Windows.Forms.MenuItem menuItemNewStudent; private System.Windows.Forms.MenuItem menuItem1; private System.Windows.Forms.MainMenu mainMenu; private System.Windows.Forms.DataGrid studentDataGrid; private ArrayList arTheStudents; public mainForm() { InitializeComponent(); CenterToScreen(); arTheStudents = new ArrayList(); arTheStudents.Add(new Student("A", "A1", "A2")); arTheStudents.Add(new Student("B", "B1", "B2")); arTheStudents.Add(new Student("C", "C1", "C2")); UpdateGrid(); } private void InitializeComponent() { this.menuItem1 = new System.Windows.Forms.MenuItem(); this.studentDataGrid = new System.Windows.Forms.DataGrid(); this.menuItemExit = new System.Windows.Forms.MenuItem(); this.menuItemNewStudent = new System.Windows.Forms.MenuItem(); this.menuItemOpen = new System.Windows.Forms.MenuItem(); this.menuItemSave = new System.Windows.Forms.MenuItem(); this.mainMenu = new System.Windows.Forms.MainMenu(); this.menuItemClear = new System.Windows.Forms.MenuItem(); ((System.ComponentModel.ISupportInitialize)(this.studentDataGrid)).BeginInit(); this.menuItem1.Index = 0; this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {this.menuItemNewStudent, this.menuItemClear, this.menuItemOpen, this.menuItemSave, this.menuItemExit}); this.menuItem1.Text = "&File"; this.studentDataGrid.AlternatingBackColor = System.Drawing.Color.White; this.studentDataGrid.BackColor = System.Drawing.Color.White; this.studentDataGrid.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.studentDataGrid.CaptionBackColor = System.Drawing.Color.Teal; this.studentDataGrid.CaptionFont = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold); this.studentDataGrid.CaptionForeColor = System.Drawing.Color.White; this.studentDataGrid.CaptionText = "Students"; this.studentDataGrid.DataMember = ""; this.studentDataGrid.FlatMode = true; this.studentDataGrid.Font = new System.Drawing.Font("Tahoma", 8F); this.studentDataGrid.ForeColor = System.Drawing.Color.Black; this.studentDataGrid.GridLineColor = System.Drawing.Color.Silver; this.studentDataGrid.HeaderBackColor = System.Drawing.Color.Black; this.studentDataGrid.HeaderFont = new System.Drawing.Font("Tahoma", 8F); this.studentDataGrid.HeaderForeColor = System.Drawing.Color.White; this.studentDataGrid.LinkColor = System.Drawing.Color.Purple; this.studentDataGrid.LinkHoverColor = System.Drawing.Color.Fuchsia; this.studentDataGrid.Location = new System.Drawing.Point(8, 40); this.studentDataGrid.ParentRowsBackColor = System.Drawing.Color.Gray; this.studentDataGrid.ParentRowsForeColor = System.Drawing.Color.White; this.studentDataGrid.SelectionBackColor = System.Drawing.Color.Maroon; this.studentDataGrid.SelectionForeColor = System.Drawing.Color.White; this.studentDataGrid.Size = new System.Drawing.Size(416, 144); this.studentDataGrid.TabIndex = 0; this.menuItemExit.Index = 4; this.menuItemExit.Text = "E&xit"; this.menuItemExit.Click += new System.EventHandler(this.menuItemExit_Click); this.menuItemNewStudent.DefaultItem = true; this.menuItemNewStudent.Index = 0; this.menuItemNewStudent.Text = "&Make New Student"; this.menuItemNewStudent.Click += new System.EventHandler(this.menuItemNewStudent_Click); this.menuItemOpen.Index = 2; this.menuItemOpen.Text = "&Open Student File"; this.menuItemOpen.Click += new System.EventHandler(this.menuItemOpen_Click); this.menuItemSave.Index = 3; this.menuItemSave.Text = "&Save Student File"; this.menuItemSave.Click += new System.EventHandler(this.menuItemSave_Click); this.mainMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {this.menuItem1}); this.menuItemClear.Index = 1; this.menuItemClear.Text = "&Clear All Students"; this.menuItemClear.Click += new System.EventHandler(this.menuItem2_Click); this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.ClientSize = new System.Drawing.Size(434, 195); this.Controls.AddRange(new System.Windows.Forms.Control[] {this.studentDataGrid}); this.Menu = this.mainMenu; this.Text = "Student Logger Application"; ((System.ComponentModel.ISupportInitialize)(this.studentDataGrid)).EndInit(); } protected void menuItem2_Click (object sender, System.EventArgs e) { arTheStudents.Clear(); UpdateGrid(); } protected void menuItemExit_Click (object sender, System.EventArgs e) { Application.Exit(); } protected void menuItemSave_Click (object sender, System.EventArgs e) { // Configure look and feel of save dlg. SaveFileDialog mySaveFileDialog = new SaveFileDialog(); mySaveFileDialog.InitialDirectory = "."; mySaveFileDialog.Filter = "student files (*.student)|*.student|All files (*.*)|*.*" ; mySaveFileDialog.FilterIndex = 1 ; mySaveFileDialog.RestoreDirectory = true ; mySaveFileDialog.FileName = "studentDoc"; if(mySaveFileDialog.ShowDialog() == DialogResult.OK) { Stream myStream = null; if((myStream = mySaveFileDialog.OpenFile()) != null) { BinaryFormatter myBinaryFormat = new BinaryFormatter(); myBinaryFormat.Serialize(myStream, arTheStudents); myStream.Close(); } } } protected void menuItemOpen_Click (object sender, System.EventArgs e) { OpenFileDialog myOpenFileDialog = new OpenFileDialog(); myOpenFileDialog.InitialDirectory = "."; myOpenFileDialog.Filter = "student files (*.student)|*.student|All files (*.*)|*.*" ; myOpenFileDialog.FilterIndex = 1 ; myOpenFileDialog.RestoreDirectory = true ; if(myOpenFileDialog.ShowDialog() == DialogResult.OK) { arTheStudents.Clear(); Stream myStream = null; if((myStream = myOpenFileDialog.OpenFile()) != null) { BinaryFormatter myBinaryFormat = new BinaryFormatter(); arTheStudents = (ArrayList)myBinaryFormat.Deserialize(myStream); myStream.Close(); UpdateGrid(); } } } protected void menuItemNewStudent_Click (object sender, System.EventArgs e) { AddStudentDlg d = new AddStudentDlg(); if(d.ShowDialog() == DialogResult.OK) { arTheStudents.Add(d.theStudent); UpdateGrid(); } } public static void Main(string[] args) { Application.Run(new mainForm()); } private void UpdateGrid() { if(arTheStudents != null) { DataTable inventory = new DataTable("StudentList"); // Create DataColumn objects. DataColumn firstName = new DataColumn("First Name"); DataColumn lastName = new DataColumn("Last Name"); DataColumn from = new DataColumn("From"); // Add columns to data table. inventory.Columns.Add(lastName); inventory.Columns.Add(firstName); inventory.Columns.Add(from); // Iterate over the array list to make rows. foreach(Student c in arTheStudents) { DataRow newRow; newRow = inventory.NewRow(); newRow["Last Name"] = c.lastName; newRow["First Name"] = c.firstName; newRow["From"] = c.from; inventory.Rows.Add(newRow); } // Now bind this data table to the grid. studentDataGrid.DataSource = inventory; } } } public class AddStudentDlg : System.Windows.Forms.Form { private System.ComponentModel.Container components; private System.Windows.Forms.ListBox listColor; private System.Windows.Forms.ListBox listMake; private System.Windows.Forms.TextBox txtName; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label1; private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.Button btnOK; // Make public for easy access public Student theStudent = null; public AddStudentDlg() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } private void InitializeComponent() { this.components = new System.ComponentModel.Container (); this.label1 = new System.Windows.Forms.Label (); this.label3 = new System.Windows.Forms.Label (); this.btnOK = new System.Windows.Forms.Button (); this.label2 = new System.Windows.Forms.Label (); this.listColor = new System.Windows.Forms.ListBox (); this.btnCancel = new System.Windows.Forms.Button (); this.listMake = new System.Windows.Forms.ListBox (); this.txtName = new System.Windows.Forms.TextBox (); label1.Location = new System.Drawing.Point (8, 24); label1.Text = "First Name"; label1.Size = new System.Drawing.Size (88, 24); label1.Font = new System.Drawing.Font ("Microsoft Sans Serif", 10, System.Drawing.FontStyle.Bold); label1.TabIndex = 2; label3.Location = new System.Drawing.Point (8, 104); label3.Text = "Color"; label3.Size = new System.Drawing.Size (80, 24); label3.Font = new System.Drawing.Font ("Microsoft Sans Serif", 10, System.Drawing.FontStyle.Bold); label3.TabIndex = 4; btnOK.Location = new System.Drawing.Point (24, 144); btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; btnOK.Size = new System.Drawing.Size (104, 24); btnOK.TabIndex = 0; btnOK.Text = "OK"; btnOK.Click += new System.EventHandler (this.btnOK_Click); label2.Location = new System.Drawing.Point (8, 64); label2.Text = "Make"; label2.Size = new System.Drawing.Size (88, 24); label2.Font = new System.Drawing.Font ("Microsoft Sans Serif", 10, System.Drawing.FontStyle.Bold); label2.TabIndex = 3; listColor.Location = new System.Drawing.Point (112, 96); listColor.Size = new System.Drawing.Size (200, 30); listColor.TabIndex = 7; listColor.Items.AddRange(new object[6] {"A", "B", "C", "D", "E", "F"}); btnCancel.Location = new System.Drawing.Point (184, 144); btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; btnCancel.Size = new System.Drawing.Size (112, 24); btnCancel.TabIndex = 1; btnCancel.Text = "Cancel"; listMake.Location = new System.Drawing.Point (112, 48); listMake.Size = new System.Drawing.Size (200, 30); listMake.TabIndex = 6; listMake.Items.AddRange(new object[3] {"a", "b", "c"}); txtName.Location = new System.Drawing.Point (112, 16); txtName.TabIndex = 5; txtName.Size = new System.Drawing.Size (200, 20); this.Text = "Add Student Dialog"; this.MaximizeBox = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.AutoScaleBaseSize = new System.Drawing.Size (5, 13); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.ControlBox = false; this.MinimizeBox = false; this.ClientSize = new System.Drawing.Size (322, 183); this.Controls.Add (this.listColor); this.Controls.Add (this.listMake); this.Controls.Add (this.txtName); this.Controls.Add (this.label3); this.Controls.Add (this.label2); this.Controls.Add (this.label1); this.Controls.Add (this.btnCancel); this.Controls.Add (this.btnOK); } protected void btnOK_Click (object sender, System.EventArgs e) { theStudent = new Student(txtName.Text, listMake.Text, listColor.Text); } } [Serializable] // Don't forget this! public class Student { // Make public for eazy access... public string lastName, firstName, from; public Student(string lastName, string firstName, string from) { this.lastName = lastName; this.from = from; this.firstName = firstName; } }