0

제 목표는 버튼 클릭 (모든 것을 닫을 때와 반대)을 통해 모든 양식 데이터를 저장하는 것입니다. 이를 위해 다음 스레드에서 주어진 예제를 사용했습니다. Saving the form state then opening it back up in the same state양식 상태를 xml로 작성하기 C#

내 능력을 최대한 발휘하도록 코드를 수정하려고 시도했지만 아무런 결과가 나타나지 않으며 오류가 표시되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

여기 내 코드의 관련 부분입니다 :

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Xml.Serialization; 

namespace WindowsFormsApplication1 
{ 
    public partial class frmPayroll : Form 
    { 
     SaveData sd = new SaveData(); 
     public frmPayroll() 
     { 
      InitializeComponent(); 
     } 
private void saveToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      writeConfig(); 
     } 
     private void writeConfig() 
     { 
      using (StreamWriter sw = new StreamWriter("config.xml")) 
      { 
       sd.Married = rdoMarr.Checked; 
       sd.PayPd = cbPayPd.Text; 
       sd.Allow = cbAllow.Text; 
       sd.Gross = txtGross.Text; 
       sd.Fit = txtFit.Text; 
       sd.Soc = txtSoc.Text; 
       sd.Med = txtMed.Text; 
       sd.NetPay = txtNet.Text; 
       sd.PayPd = cbPayPd.Text; 
       XmlSerializer ser = new XmlSerializer(typeof(SaveData)); 
       ser.Serialize(sw, sd); 
      } 
     } 
     private void frmPayroll_Load(object sender, EventArgs e) 
     { 
      if (File.Exists("config.xml")) 
      { 
       loadConfig(); 
      } 
      sd.Married = rdoMarr.Checked; 
      sd.PayPd = cbPayPd.Text; 
      sd.Allow = cbAllow.Text; 
      sd.Gross = txtGross.Text; 
      sd.Fit = txtFit.Text; 
      sd.Soc = txtSoc.Text; 
      sd.Med = txtMed.Text; 
      sd.NetPay = txtNet.Text; 
     } 
     private void loadConfig() 
     { 
      XmlSerializer ser = new XmlSerializer(typeof(SaveData)); 
      using (FileStream fs = File.OpenRead("config.xml")) 
      { 
       sd = (SaveData)ser.Deserialize(fs); 
      } 
     } 
    } 
    public struct SaveData 
    { 
     public bool Married; 
     public string PayPd; 
     public string Allow; 
     public string Gross; 
     public string Fit; 
     public string Soc; 
     public string Med; 
     public string NetPay; 
    } 
} 

답변

0

당신은 역 직렬화하여 객체를로드한다.

하지만 상태를 컨트롤에 어디에 다시 지정합니까?

보기에서 frmPayroll_Load 기능.

데이터를 다시 개체에 할당하려고합니다.

데이터를 양식 컨트롤에 다시 지정해야합니다.

는 다음과 같이이어야한다 (필요한 경우 데이터 변환을 적용해야 할 수도 있습니다) :

rdoMarr.Checked = sd.Married; 
. 
. 
. 
. 
txtFit.Text = sd.Fit; 
. 
. 
. 
. 
+0

감사를! 나는 그것을 시도하자마자 일했다. 나는 내가 뭘 잘못하고 있는지 알아 내려고 애 쓰고 있었다. C# 클래스를 사용하고 있지만 필수 구성 요소 중 하나를 선택하지 않았기 때문에 때로는 MSDN의 자습서 나 예제 중 많은 부분을 이해하기가 어렵습니다. 지금 명확한 단추를 추가하는 것을 시도하기 위하여. – Gatorneck

+0

나는 당신의 대답에 대해 투표를 시도했지만 충분한 담당자가 아직 없습니다. – Gatorneck

+0

당신은 대답을 내가 받아 들일 수 있습니다 .... 비록 당신이 upvote 수 없습니다. – Naidu