SSISO Community

갤러리정

Add Object based data to DataGrid

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;
                }
        }

619 view

4.0 stars