Csharp/C Sharp/GUI Windows Form/Data Binding — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 15:31, 26 мая 2010
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.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());
}
}
}
<A href="http://www.nfex.ru/Code/CSharpDownload/FormatAndParse.zip">FormatAndParse.zip( 48 k)</a>
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.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());
}
}
}
<A href="http://www.nfex.ru/Code/CSharpDownload/FormatAndParse.zip">FormatAndParse.zip( 48 k)</a>