Csharp/C Sharp/GUI Windows Form/DataGrid

Материал из .Net Framework эксперт
Версия от 14:32, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Add Object based data to DataGrid

<source lang="csharp">

   using System;
   using System.Drawing;
   using System.Collections;
   using System.ruponentModel;
   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.ruponentModel.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.ruponentModel.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.ruponentModel.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.ruponents = new System.ruponentModel.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;
       }
   }


      </source>