Csharp/C Sharp/GUI Windows Form/DataGrid
Версия от 15:31, 26 мая 2010; (обсуждение)
Add Object based data to DataGrid
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;
}
}