Csharp/C Sharp/GUI Windows Form/Data Binding

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Format And Parse

<source lang="csharp"> /* 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.ruponentModel; 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.ruboBox cboModelName;
   /// <summary>
   /// Required designer variable.
   /// </summary>
   private System.ruponentModel.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.ruboBox();
     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.ruboBoxStyle.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());
   }  
 }

}


      </source>

<A href="http://www.nfex.ru/Code/CSharpDownload/FormatAndParse.zip">FormatAndParse.zip( 48 k)</a>


Format And Parse Image

<source lang="csharp"> /* 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.ruponentModel; 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.ruboBox cboModelName;
   /// <summary>
   /// Required designer variable.
   /// </summary>
   private System.ruponentModel.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.ruboBox();
     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.ruboBoxStyle.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());
   }  
 }

}


      </source>

<A href="http://www.nfex.ru/Code/CSharpDownload/FormatAndParse.zip">FormatAndParse.zip( 48 k)</a>