Format And Parse : Data Binding « GUI Windows Form « C# / C Sharp






Format And Parse

/*
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 FormatAndParse.
  /// </summary>
  public class FormatAndParse : System.Windows.Forms.Form
  {
    internal System.Windows.Forms.GroupBox GroupBox1;
    internal System.Windows.Forms.TextBox txtUnitCost;
    internal System.Windows.Forms.Label Label2;
    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 FormatAndParse()
    {
      //
      // 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.txtUnitCost = new System.Windows.Forms.TextBox();
      this.Label2 = new System.Windows.Forms.Label();
      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.txtUnitCost,
                                          this.Label2});
      this.GroupBox1.FlatStyle = System.Windows.Forms.FlatStyle.System;
      this.GroupBox1.Location = new System.Drawing.Point(12, 34);
      this.GroupBox1.Name = "GroupBox1";
      this.GroupBox1.Size = new System.Drawing.Size(352, 136);
      this.GroupBox1.TabIndex = 22;
      this.GroupBox1.TabStop = false;
      // 
      // txtUnitCost
      // 
      this.txtUnitCost.Location = new System.Drawing.Point(150, 35);
      this.txtUnitCost.Name = "txtUnitCost";
      this.txtUnitCost.Size = new System.Drawing.Size(128, 21);
      this.txtUnitCost.TabIndex = 14;
      this.txtUnitCost.Text = "";
      // 
      // Label2
      // 
      this.Label2.Location = new System.Drawing.Point(16, 40);
      this.Label2.Name = "Label2";
      this.Label2.Size = new System.Drawing.Size(128, 16);
      this.Label2.TabIndex = 17;
      this.Label2.Text = "Display Value for Price:";
      // 
      // Label1
      // 
      this.Label1.Location = new System.Drawing.Point(14, 10);
      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, 198);
      this.lblStatus.Name = "lblStatus";
      this.lblStatus.Size = new System.Drawing.Size(372, 24);
      this.lblStatus.TabIndex = 20;
      // 
      // cboModelName
      // 
      this.cboModelName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
      this.cboModelName.Location = new System.Drawing.Point(78, 8);
      this.cboModelName.Name = "cboModelName";
      this.cboModelName.Size = new System.Drawing.Size(248, 21);
      this.cboModelName.TabIndex = 19;
      // 
      // FormatAndParse
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
      this.ClientSize = new System.Drawing.Size(372, 222);
      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 = "FormatAndParse";
      this.Text = "FormatAndParse";
      this.Load += new System.EventHandler(this.FormatAndParse_Load);
      this.GroupBox1.ResumeLayout(false);
      this.ResumeLayout(false);

    }
    #endregion

    private void FormatAndParse_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";

      // Create the binding.
      Binding costBinding = new Binding("Text", dsStore.Tables["Products"], 
        "UnitCost");

      // Connect the methods for formatting and parsing data.
      costBinding.Format += new ConvertEventHandler(DecimalToCurrencyString);
      costBinding.Parse += new ConvertEventHandler(CurrencyStringToDecimal);

      // Add the binding.
      txtUnitCost.DataBindings.Add(costBinding);

    }
    private void DecimalToCurrencyString(object sender, ConvertEventArgs e)
    {
      if (e.DesiredType == typeof(string))
      {
        // Use the ToString method to format the value as currency ("c").
        e.Value = ((decimal)e.Value).ToString("c");
      }
    }

    private void CurrencyStringToDecimal(object sender, ConvertEventArgs e)
    {
      if (e.DesiredType == typeof(decimal))
      {
        // Convert the string back to decimal using the shared Parse method.
        e.Value = Decimal.Parse(e.Value.ToString(),
          System.Globalization.NumberStyles.Currency, null);
      }
    }
    private void TableChanged(object sender, System.Data.DataColumnChangeEventArgs e)
    {
      lblStatus.Text = "Detected change. Column " + e.Column.ColumnName;
      lblStatus.Text += " updated to " + e.ProposedValue.ToString() + ".";
    }

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



           
       








FormatAndParse.zip( 48 k)

Related examples in the same category

1.Format And Parse ImageFormat And Parse Image