//Update 修正を追加し、Form1.c コード全体を提供しました。
シンプルにするために、これを少し控えめにしました。これで、すべてのフォーム コントロールが設定されました。この質問のために、DateTimePicker(Short) としての日付、maskedTextBox("###-##") としての従業員番号、単純な textBox としての従業員名、maskedTextBox (標準 SSNum) としての SS 番号など。このすべてのデータを処理するために、次のように Employee_Data というクラスを作成しました...
namespace Employee
{
public class Employee_Data
{
//Make Members Xml elements
[XmlElement("EmployeeNumber")]
public String EmployeeNumber {get; set;}
[XmlElement("Date")]
public DateTime Date {get; set;}
[XmlElement("EmployeeName")]
public String EmployeeName {get; set;}
[XmlElement("SSNumber")]
public String SSNumber {get; set;}
}
}
Form1.cs に e_d というオブジェクトを作成し、VS で自動イベント処理を使用します。デバッガーは、値がクラス オブジェクトに正常に格納されていることを示しています (maskedText 値にはダッシュが含まれています)。ただし、以下に示すようにデータをシリアル化しようとすると、マスクされた textValues が xml ファイルから省略されます...
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Serialization;
using System.IO;
using System.Xml;
namespace Employee
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Employee_Data e_d = new Employee_Data();
private void EmployyeeNumber_TextChanged(object sender, EventArgs e)
{
e_d.EmployeeNumber=EmployeeNumber.Text;
}
private void Date_ValueChanged(object sender, EventArgs e)
{
e_d.Date=Date.Value;
}
private void EmployeeName_TextChanged(object sender, EventArgs e)
{
e_d.EmployeeName=EmployeeName.Text;
}
private void SSNumber_ValueChanged(object sender, EventArgs e)
{
e_d.SSNumber=SSNumber.Text;
}
private void saveButton_Click(object sender, EventArgs e)
{
saveFileDialog1.DefaultExt = "xml";
saveFileDialog1.Filter = "XML File (.xml)|*.xml";
saveFileDialog1.AddExtension = true;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.ShowDialog();
}
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
string name = saveFileDialog1.FileName;
using (TextWriter texWrt = new StreamWriter(saveFileDialog1.FileName))
{
XmlSerializer serializer = new XmlSerializer(typeof(Employee_Data));
serializer.Serialize(texWrt, e_d);
}
}
私はこの問題を調査しましたが、この特定の主題についてはあまりないようです。