Set DateTimePicker Min Date and Max Date


   


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

public class Form1 : Form
{
    private System.Windows.Forms.DateTimePicker dateTimePickerDropOff;
    private System.Windows.Forms.Label outputLabel;
    private System.Windows.Forms.Label deliveryLabel;
    private System.Windows.Forms.Label dropOffLabel;
    public Form1() {
        InitializeComponent();
        dateTimePickerDropOff.MinDate = DateTime.Today;
        dateTimePickerDropOff.MaxDate = DateTime.Today.AddYears( 1 );
  }

   private void dateTimePickerDropOff_ValueChanged( object sender, EventArgs e )
   {
      DateTime dropOffDate = dateTimePickerDropOff.Value;

      if ( dropOffDate.DayOfWeek == DayOfWeek.Friday ||
         dropOffDate.DayOfWeek == DayOfWeek.Saturday ||
         dropOffDate.DayOfWeek == DayOfWeek.Sunday )

         outputLabel.Text = dropOffDate.AddDays( 3 ).ToLongDateString();
      else
         outputLabel.Text = dropOffDate.AddDays( 2 ).ToLongDateString();
   }

   private void InitializeComponent()
   {
      this.dateTimePickerDropOff = new System.Windows.Forms.DateTimePicker();
      this.outputLabel = new System.Windows.Forms.Label();
      this.deliveryLabel = new System.Windows.Forms.Label();
      this.dropOffLabel = new System.Windows.Forms.Label();
      this.SuspendLayout();
      // 
      // dateTimePickerDropOff
      // 
      this.dateTimePickerDropOff.Location = new System.Drawing.Point(31, 39);
      this.dateTimePickerDropOff.Name = "dateTimePickerDropOff";
      this.dateTimePickerDropOff.Size = new System.Drawing.Size(200, 20);
      this.dateTimePickerDropOff.TabIndex = 0;
      this.dateTimePickerDropOff.ValueChanged += new System.EventHandler(this.dateTimePickerDropOff_ValueChanged);
      // 
      // outputLabel
      // 
      this.outputLabel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
      this.outputLabel.Location = new System.Drawing.Point(31, 108);
      this.outputLabel.Name = "outputLabel";
      this.outputLabel.Size = new System.Drawing.Size(200, 23);
      this.outputLabel.TabIndex = 1;
      // 
      // deliveryLabel
      // 
      this.deliveryLabel.AutoSize = true;
      this.deliveryLabel.Location = new System.Drawing.Point(30, 95);
      this.deliveryLabel.Name = "deliveryLabel";
      this.deliveryLabel.Size = new System.Drawing.Size(119, 13);
      this.deliveryLabel.TabIndex = 2;
      // 
      // dropOffLabel
      // 
      this.dropOffLabel.AutoSize = true;
      this.dropOffLabel.Location = new System.Drawing.Point(30, 23);
      this.dropOffLabel.Name = "dropOffLabel";
      this.dropOffLabel.Size = new System.Drawing.Size(72, 13);
      this.dropOffLabel.TabIndex = 3;
      this.dropOffLabel.Text = "Drop Off Date:";
      // 
      // DateTimePickerForm
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
      this.ClientSize = new System.Drawing.Size(262, 235);
      this.Controls.Add(this.dropOffLabel);
      this.Controls.Add(this.deliveryLabel);
      this.Controls.Add(this.outputLabel);
      this.Controls.Add(this.dateTimePickerDropOff);
      this.Name = "DateTimePickerForm";
      this.Text = "DateTimePickerTest";
      this.ResumeLayout(false);
      this.PerformLayout();
 
    }
   [STAThread]
   static void Main()
  {
    Application.EnableVisualStyles();
    Application.Run(new Form1());
  }

}


           
          


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


           
          


DataGrid Binding: Custom DataGrid Column Form


/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald

Publisher: Apress
ISBN: 1590590457
*/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace DataGridBinding
{
///

/// Summary description for CustomDataGridColumnForm.
///

public class CustomDataGridColumnForm : System.Windows.Forms.Form
{
internal System.Windows.Forms.DataGrid grid;
///

/// Required designer variable.
///

private System.ComponentModel.Container components = null;

public CustomDataGridColumnForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

///

/// Clean up any resources being used.
///

protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
///

/// Required method for Designer support – do not modify
/// the contents of this method with the code editor.
///

private void InitializeComponent()
{
this.grid = new System.Windows.Forms.DataGrid();
((System.ComponentModel.ISupportInitialize)(this.grid)).BeginInit();
this.SuspendLayout();
//
// grid
//
this.grid.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.grid.DataMember = “”;
this.grid.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.grid.Location = new System.Drawing.Point(10, 17);
this.grid.Name = “grid”;
this.grid.Size = new System.Drawing.Size(272, 232);
this.grid.TabIndex = 1;
//
// CustomDataGridColumnForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.grid});
this.Name = “CustomDataGridColumnForm”;
this.Text = “CustomDataGridColumnForm”;
this.Load += new System.EventHandler(this.CustomDataGridColumnForm_Load);
((System.ComponentModel.ISupportInitialize)(this.grid)).EndInit();
this.ResumeLayout(false);

}
#endregion

[STAThread]
static void Main()
{
Application.Run(new CustomDataGridColumnForm());
}

private void CustomDataGridColumnForm_Load(object sender, System.EventArgs e)
{
DataSet dsStore = new DataSet();

dsStore.ReadXmlSchema(Application.StartupPath + “store.xsd”);
dsStore.ReadXml(Application.StartupPath + “store.xml”);

// Create the column collection.
DataGridTableStyle columns = new DataGridTableStyle();
columns.MappingName = “Products”;

// Create and configure the columns you want to display.
DataGridPriceIconColumn priceCol = new DataGridPriceIconColumn(100);
priceCol.HeaderText = “Price”;
priceCol.MappingName = “UnitCost”;

// Add the columns to the collection.
columns.GridColumnStyles.Add(priceCol);

// Configure the DataGrid to use these column settings.
grid.TableStyles.Add(columns);

grid.ReadOnly = true;

// Bind the grid.
grid.DataSource = dsStore.Tables[“Products”];

}
}

public class DataGridPriceIconColumn : DataGridColumnStyle
{
public decimal NicePrice;

public DataGridPriceIconColumn(decimal nicePrice)
{
this.NicePrice = nicePrice;
}

protected override void Abort(int rowNum)
{
// Do nothing.
}

protected override bool Commit(CurrencyManager dataSource, int rowNum)
{
return true;
}

protected override void Edit(CurrencyManager source,
int rowNum, System.Drawing.Rectangle bounds,
bool readOnly, string instantText, bool cellIsVisible)
{
// Do nothing.
}

protected override void Edit(CurrencyManager source,
int rowNum, System.Drawing.Rectangle bounds, bool readOnly)
{
// Do nothing.
}

protected override void Edit(CurrencyManager source,
int rowNum, System.Drawing.Rectangle bounds,
bool readOnly, string instantText)
{
// Do nothing.
}
protected override int GetMinimumHeight()
{
return 20;
}

protected override int GetPreferredHeight(System.Drawing.Graphics g,
object value)
{
return 20;
}

protected override System.Drawing.Size GetPreferredSize(
System.Drawing.Graphics g, object value)
{
return new Size(100, 20);
}

protected override void Paint(System.Drawing.Graphics g,
System.Drawing.Rectangle bounds, CurrencyManager source, int rowNum,
System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush,
bool alignToRight)
{
// Clear the cell.
g.FillRegion(backBrush, new Region(bounds));

decimal price = (decimal)this.GetColumnValueAtRow(source, rowNum);
Icon priceIcon;
if (price < NicePrice) { priceIcon = new Icon(Application.StartupPath + "happy2.ico"); // Draw the optional "nice price" icon. g.DrawIcon(priceIcon, new Rectangle(bounds.X, bounds.Y, 16, 16)); } // Draw the text. g.DrawString(price.ToString("C"), new Font("Tahoma", (float)8.25), Brushes.Black, bounds.X + 20, bounds.Y + 2); } protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, CurrencyManager source, int rowNum, bool alignToRight) { this.Paint(g, bounds, source, rowNum, Brushes.White, Brushes.Black, alignToRight); } protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, CurrencyManager source, int rowNum) { this.Paint(g, bounds, source, rowNum, Brushes.White, Brushes.Black, false); } } } DataGridBinding.zip( 45 k)[/csharp]

DataGrid Binding



   

/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald

Publisher: Apress
ISBN: 1590590457
*/

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace DataGridBinding
{
    /// <summary>
    /// Summary description for DataGridBinding.
    /// </summary>
    public class DataGridBinding : System.Windows.Forms.Form
    {
        internal System.Windows.Forms.DataGrid grid;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public DataGridBinding()
        {
            //
            // 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.grid = new System.Windows.Forms.DataGrid();
            ((System.ComponentModel.ISupportInitialize)(this.grid)).BeginInit();
            this.SuspendLayout();
            // 
            // grid
            // 
            this.grid.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
                | System.Windows.Forms.AnchorStyles.Left) 
                | System.Windows.Forms.AnchorStyles.Right);
            this.grid.DataMember = "";
            this.grid.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.grid.Location = new System.Drawing.Point(10, 17);
            this.grid.Name = "grid";
            this.grid.Size = new System.Drawing.Size(272, 232);
            this.grid.TabIndex = 1;
            // 
            // DataGridBinding
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.grid});
            this.Name = "DataGridBinding";
            this.Text = "DataGridBinding";
            this.Load += new System.EventHandler(this.DataGridBinding_Load);
            ((System.ComponentModel.ISupportInitialize)(this.grid)).EndInit();
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new DataGridBinding());
        }

        private void DataGridBinding_Load(object sender, System.EventArgs e)
        {
            DataSet dsStore = new DataSet();
            
            dsStore.ReadXmlSchema(Application.StartupPath + "store.xsd");
            dsStore.ReadXml(Application.StartupPath + "store.xml");
            
            // Create a relation between categories and products.
            DataRelation dr = new DataRelation("Products in this category", 
                dsStore.Tables["Categories"].Columns["CategoryID"], 
                dsStore.Tables["Products"].Columns["CategoryID"]);
            
            // Add the relation to the DataSet.
            dsStore.Relations.Add(dr);
            
            // Bind the data grid.
            grid.DataSource = dsStore.Tables["Categories"];

        }
    }
}


           
          


DataGridBinding.zip( 45 k)

Error Provider Validation


   

/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald

Publisher: Apress
ISBN: 1590590457
*/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace Validation
{
    /// <summary>
    /// Summary description for ErrorProviderValidation.
    /// </summary>
    public class ErrorProviderValidation : System.Windows.Forms.Form
    {
        internal System.Windows.Forms.Label Label3;
        internal System.Windows.Forms.TextBox txtEmail;
        internal System.Windows.Forms.Label Label2;
        internal System.Windows.Forms.Label Label1;
        internal System.Windows.Forms.TextBox txtFirstName;
        internal System.Windows.Forms.TextBox txtLastName;
        internal System.Windows.Forms.Button Button1;
        internal System.Windows.Forms.ErrorProvider errProvider;
        internal System.Windows.Forms.GroupBox grpValidation;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public ErrorProviderValidation()
        {
            //
            // 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.grpValidation = new System.Windows.Forms.GroupBox();
            this.Label3 = new System.Windows.Forms.Label();
            this.txtEmail = new System.Windows.Forms.TextBox();
            this.Label2 = new System.Windows.Forms.Label();
            this.Label1 = new System.Windows.Forms.Label();
            this.txtFirstName = new System.Windows.Forms.TextBox();
            this.txtLastName = new System.Windows.Forms.TextBox();
            this.Button1 = new System.Windows.Forms.Button();
            this.errProvider = new System.Windows.Forms.ErrorProvider();
            this.grpValidation.SuspendLayout();
            this.SuspendLayout();
            // 
            // grpValidation
            // 
            this.grpValidation.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                        this.Label3,
                                                                                        this.txtEmail,
                                                                                        this.Label2,
                                                                                        this.Label1,
                                                                                        this.txtFirstName,
                                                                                        this.txtLastName});
            this.grpValidation.Location = new System.Drawing.Point(8, 8);
            this.grpValidation.Name = "grpValidation";
            this.grpValidation.Size = new System.Drawing.Size(368, 124);
            this.grpValidation.TabIndex = 13;
            this.grpValidation.TabStop = false;
            // 
            // Label3
            // 
            this.Label3.Location = new System.Drawing.Point(16, 88);
            this.Label3.Name = "Label3";
            this.Label3.Size = new System.Drawing.Size(64, 16);
            this.Label3.TabIndex = 10;
            this.Label3.Text = "Email:";
            // 
            // txtEmail
            // 
            this.txtEmail.Location = new System.Drawing.Point(84, 84);
            this.txtEmail.Name = "txtEmail";
            this.txtEmail.Size = new System.Drawing.Size(152, 21);
            this.txtEmail.TabIndex = 9;
            this.txtEmail.Text = "";
            this.txtEmail.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtEmail_KeyPress);
            // 
            // Label2
            // 
            this.Label2.Location = new System.Drawing.Point(16, 52);
            this.Label2.Name = "Label2";
            this.Label2.Size = new System.Drawing.Size(64, 16);
            this.Label2.TabIndex = 8;
            this.Label2.Text = "Last Name:";
            // 
            // Label1
            // 
            this.Label1.Location = new System.Drawing.Point(16, 28);
            this.Label1.Name = "Label1";
            this.Label1.Size = new System.Drawing.Size(64, 16);
            this.Label1.TabIndex = 7;
            this.Label1.Text = "First Name:";
            // 
            // txtFirstName
            // 
            this.txtFirstName.Location = new System.Drawing.Point(84, 24);
            this.txtFirstName.Name = "txtFirstName";
            this.txtFirstName.Size = new System.Drawing.Size(152, 21);
            this.txtFirstName.TabIndex = 4;
            this.txtFirstName.Text = "";
            this.txtFirstName.Validating += new System.ComponentModel.CancelEventHandler(this.txtName_Validating);
            // 
            // txtLastName
            // 
            this.txtLastName.Location = new System.Drawing.Point(84, 48);
            this.txtLastName.Name = "txtLastName";
            this.txtLastName.Size = new System.Drawing.Size(152, 21);
            this.txtLastName.TabIndex = 5;
            this.txtLastName.Text = "";
            this.txtLastName.Validating += new System.ComponentModel.CancelEventHandler(this.txtName_Validating);
            // 
            // Button1
            // 
            this.Button1.Location = new System.Drawing.Point(152, 204);
            this.Button1.Name = "Button1";
            this.Button1.Size = new System.Drawing.Size(76, 24);
            this.Button1.TabIndex = 12;
            this.Button1.Text = "OK";
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            // 
            // errProvider
            // 
            this.errProvider.DataMember = null;
            // 
            // ErrorProviderValidation
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
            this.ClientSize = new System.Drawing.Size(388, 242);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.grpValidation,
                                                                          this.Button1});
            this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.Name = "ErrorProviderValidation";
            this.Text = "ErrorProviderValidation";
            this.grpValidation.ResumeLayout(false);
            this.ResumeLayout(false);

        }
        #endregion

        [STAThread]
        static void Main() 
        {
            Application.Run(new ErrorProviderValidation());
        }

        private void Button1_Click(object sender, System.EventArgs e)
        {
            bool invalidInput = false;
            
            foreach (Control ctrl in this.grpValidation.Controls)
            {
                if (errProvider.GetError(ctrl) != "")
                {
                    invalidInput = true;
                    break;
                }
            }
            
            if (invalidInput)
            {
                MessageBox.Show("You still have invalid input.", "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                this.Close();
            }
        
        }

        private void txtName_Validating(object sender, System.ComponentModel.CancelEventArgs e)
        {
            Control ctrl = (Control)sender;
            if (ctrl.Text == "")
            {
                errProvider.SetError(ctrl, "You must enter a first and last name.");
            }
            else
            {
                errProvider.SetError(ctrl, "");
            }
        }

        private void txtEmail_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            System.Text.RegularExpressions.Regex regex;
            regex = new System.Text.RegularExpressions.Regex(@"S+@S+.S+");

            Control ctrl = (Control)sender;
            if (regex.IsMatch(ctrl.Text))
            {
                errProvider.SetError(ctrl, "");
            }
            else
            {
                errProvider.SetError(ctrl, "Not a valid email.");
            }

        }
    
    }
}



           
          


Simple Form Validation


   

/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald

Publisher: Apress
ISBN: 1590590457
*/

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace Validation
{
    /// <summary>
    /// Summary description for SimpleValidation.
    /// </summary>
    public class SimpleValidation : System.Windows.Forms.Form
    {
        internal System.Windows.Forms.GroupBox GroupBox1;
        internal System.Windows.Forms.Label Label2;
        internal System.Windows.Forms.Label Label1;
        internal System.Windows.Forms.TextBox txtFirstName;
        internal System.Windows.Forms.TextBox txtLastName;
        internal System.Windows.Forms.Button Button1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public SimpleValidation()
        {
            //
            // 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.GroupBox1 = new System.Windows.Forms.GroupBox();
            this.Label2 = new System.Windows.Forms.Label();
            this.Label1 = new System.Windows.Forms.Label();
            this.txtFirstName = new System.Windows.Forms.TextBox();
            this.txtLastName = new System.Windows.Forms.TextBox();
            this.Button1 = new System.Windows.Forms.Button();
            this.GroupBox1.SuspendLayout();
            this.SuspendLayout();
            // 
            // GroupBox1
            // 
            this.GroupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                    this.Label2,
                                                                                    this.Label1,
                                                                                    this.txtFirstName,
                                                                                    this.txtLastName});
            this.GroupBox1.Location = new System.Drawing.Point(8, 12);
            this.GroupBox1.Name = "GroupBox1";
            this.GroupBox1.Size = new System.Drawing.Size(368, 88);
            this.GroupBox1.TabIndex = 11;
            this.GroupBox1.TabStop = false;
            // 
            // Label2
            // 
            this.Label2.Location = new System.Drawing.Point(16, 52);
            this.Label2.Name = "Label2";
            this.Label2.Size = new System.Drawing.Size(64, 16);
            this.Label2.TabIndex = 8;
            this.Label2.Text = "Last Name:";
            // 
            // Label1
            // 
            this.Label1.Location = new System.Drawing.Point(16, 28);
            this.Label1.Name = "Label1";
            this.Label1.Size = new System.Drawing.Size(64, 16);
            this.Label1.TabIndex = 7;
            this.Label1.Text = "First Name:";
            // 
            // txtFirstName
            // 
            this.txtFirstName.Location = new System.Drawing.Point(84, 24);
            this.txtFirstName.Name = "txtFirstName";
            this.txtFirstName.Size = new System.Drawing.Size(152, 21);
            this.txtFirstName.TabIndex = 4;
            this.txtFirstName.Text = "";
            this.txtFirstName.Validating += new System.ComponentModel.CancelEventHandler(this.txtName_Validating);
            // 
            // txtLastName
            // 
            this.txtLastName.Location = new System.Drawing.Point(84, 48);
            this.txtLastName.Name = "txtLastName";
            this.txtLastName.Size = new System.Drawing.Size(152, 21);
            this.txtLastName.TabIndex = 5;
            this.txtLastName.Text = "";
            this.txtLastName.Validating += new System.ComponentModel.CancelEventHandler(this.txtName_Validating);
            // 
            // Button1
            // 
            this.Button1.Location = new System.Drawing.Point(152, 208);
            this.Button1.Name = "Button1";
            this.Button1.Size = new System.Drawing.Size(76, 24);
            this.Button1.TabIndex = 10;
            this.Button1.Text = "OK";
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            // 
            // SimpleValidation
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
            this.ClientSize = new System.Drawing.Size(384, 242);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                          this.GroupBox1,
                                                                          this.Button1});
            this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.Name = "SimpleValidation";
            this.Text = "SimpleValidation";
            this.GroupBox1.ResumeLayout(false);
            this.ResumeLayout(false);

        }
        #endregion

        private void Button1_Click(object sender, System.EventArgs e)
        {
            this.Close();
        }

        [STAThread]
        static void Main() 
        {
            Application.Run(new SimpleValidation());
        }

        private void txtName_Validating(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (((TextBox)sender).Text == "")
            {
                MessageBox.Show("You must enter a first and last name.", "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                e.Cancel = true;
            }
        }
    }
}


           
          


Format And Parse Image



   

/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald

Publisher: Apress
ISBN: 1590590457
*/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace FormatAndParse
{
  /// <summary>
  /// Summary description for FormatAndParseImage.
  /// </summary>
  public class FormatAndParseImage : System.Windows.Forms.Form
  {
    internal System.Windows.Forms.GroupBox GroupBox1;
    internal System.Windows.Forms.PictureBox picProduct;
    internal System.Windows.Forms.Label Label1;
    internal System.Windows.Forms.Label lblStatus;
    internal System.Windows.Forms.ComboBox cboModelName;
    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.Container components = null;

    public FormatAndParseImage()
    {
      //
      // 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.GroupBox1 = new System.Windows.Forms.GroupBox();
      this.picProduct = new System.Windows.Forms.PictureBox();
      this.Label1 = new System.Windows.Forms.Label();
      this.lblStatus = new System.Windows.Forms.Label();
      this.cboModelName = new System.Windows.Forms.ComboBox();
      this.GroupBox1.SuspendLayout();
      this.SuspendLayout();
      // 
      // GroupBox1
      // 
      this.GroupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
                                          this.picProduct});
      this.GroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.System;
      this.GroupBox1.Location = new System.Drawing.Point(12, 52);
      this.GroupBox1.Name = "GroupBox1";
      this.GroupBox1.Size = new System.Drawing.Size(352, 128);
      this.GroupBox1.TabIndex = 22;
      this.GroupBox1.TabStop = false;
      this.GroupBox1.Text = "Display Value for ProductImage";
      // 
      // picProduct
      // 
      this.picProduct.Location = new System.Drawing.Point(16, 24);
      this.picProduct.Name = "picProduct";
      this.picProduct.Size = new System.Drawing.Size(128, 88);
      this.picProduct.TabIndex = 18;
      this.picProduct.TabStop = false;
      // 
      // Label1
      // 
      this.Label1.Location = new System.Drawing.Point(20, 20);
      this.Label1.Name = "Label1";
      this.Label1.Size = new System.Drawing.Size(64, 16);
      this.Label1.TabIndex = 21;
      this.Label1.Text = "Product:";
      // 
      // lblStatus
      // 
      this.lblStatus.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
      this.lblStatus.Dock = System.Windows.Forms.DockStyle.Bottom;
      this.lblStatus.FlatStyle = System.Windows.Forms.FlatStyle.System;
      this.lblStatus.ForeColor = System.Drawing.SystemColors.HotTrack;
      this.lblStatus.Location = new System.Drawing.Point(0, 218);
      this.lblStatus.Name = "lblStatus";
      this.lblStatus.Size = new System.Drawing.Size(388, 24);
      this.lblStatus.TabIndex = 20;
      // 
      // cboModelName
      // 
      this.cboModelName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
      this.cboModelName.Location = new System.Drawing.Point(84, 16);
      this.cboModelName.Name = "cboModelName";
      this.cboModelName.Size = new System.Drawing.Size(248, 21);
      this.cboModelName.TabIndex = 19;
      // 
      // FormatAndParseImage
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
      this.ClientSize = new System.Drawing.Size(388, 242);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                      this.GroupBox1,
                                      this.Label1,
                                      this.lblStatus,
                                      this.cboModelName});
      this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
      this.Name = "FormatAndParseImage";
      this.Text = "FormatAndParseImage";
      this.Load += new System.EventHandler(this.FormatAndParseImage_Load);
      this.GroupBox1.ResumeLayout(false);
      this.ResumeLayout(false);

    }
    #endregion

    private void FormatAndParseImage_Load(object sender, System.EventArgs e)
    {
      DataSet dsStore = new DataSet();
      dsStore.ReadXmlSchema(Application.StartupPath + "store.xsd");
      dsStore.ReadXml(Application.StartupPath + "store.xml");
      
      cboModelName.DataSource = dsStore.Tables["Products"];
      cboModelName.DisplayMember = "ModelName";

      Binding pictureBinding = new Binding("Image", dsStore.Tables["Products"], 
        "ProductImage");
      pictureBinding.Format += new ConvertEventHandler(FileToImage);
      pictureBinding.Parse += new ConvertEventHandler(ImageToFile);

      picProduct.DataBindings.Add(pictureBinding);

    }

    private void FileToImage(object sender, ConvertEventArgs e)
    {
      if (e.DesiredType == typeof(Image))
      {
        // Store the filename.
        picProduct.Tag = e.Value;

        // Look up the corresponding file, and create an Image object.
        e.Value = Image.FromFile(Application.StartupPath + "" + e.Value);
      }
    }

    private void ImageToFile(object sender, ConvertEventArgs e)
    {
      if (e.DesiredType == typeof(string))
      {
        // Substitute the filename.
        e.Value = picProduct.Tag;
      }
    }
    [STAThread]
    static void Main() 
    {
      Application.Run(new FormatAndParseImage());
    }  
  }
}



           
          


FormatAndParse.zip( 48 k)