2013-02-25 4 views
0

사용자가 글을 쓸 수있는 텍스트 목록에 사용자가 로그인 한 다음 데이터를 저장 한 다음 앱을 닫는 앱이 있습니다. 데이터가 아직 텍스트 상자에 열려 있는지 확인하십시오.ap를 열고 닫을 때 텍스트 상자에 데이터로드, 저장 및 읽기 C# VS 2012

필자는 .txt와 .xml을 연구하여 어느 것이 가장 적합한 형식인지 알아 보았습니다. 나는 또한 XML Serialization을 연구했으며 .xml 파일에 어떤 코드가 들어 있는지 알 수 있었지만 데이터 상자가 제대로로드 될 수 있도록 텍스트 상자의 이름을 변경해야합니까? 페이지 자체에 약 15 개의 텍스트 상자가 있습니다.

System.Xml.Serialization을 사용하여 추가했습니다. 내 양식에. 또한 사용자가 로그인 할 때 기존 양식을 열면 사용자가 로그 아웃하면 양식이 닫힙니다.

나는 모든 데이터가 표시된 페이지를로드하는 방법에 대해 혼란 스럽습니다. 데이터를 저장하고 (Iv가 텍스트 상자 페이지의 저장 버튼을 만들었습니다) 파일을 읽고 읽고로드하지 않고 있습니까?

visual studio 2012를 사용하고 있습니다. Winforms C#

+0

그것은 사용자 별해야한다 :

public Form1() { this.Load += OnLoad(); this.FormClosing += OnFormClosing(); } private void OnLoad(object sender, EventArgs e) { // Read Data from Xml with the dataset (dataset.Readxml...) } private void OnFormClosing(object sender, FormClosingEventArgs e) { // Write the Data from the textboxes into the xml (dataset.writexml...) } 

는 다음과 같은 코드를 사용할 수 있습니다로드 부분에있는 텍스트 상자의 값을 설정하려면? 그렇다면 데이터베이스를 사용하는 접근 방식이 더 좋을 수 있습니다. 너 뭐 해봤 니? 약간의 코드를 보여주세요. – Nogard

답변

0

나는 완전히 문제를 이해할 수 없다. 원하는 프로그램 코딩을 보여줍니다. 페이지가로드 될 때 모든 텍스트 상자 데이터를 지우십시오.

private void Form1_Load(object sender, EventArgs e) 
    { 
     textBox1.Text = string.Empty; 
    } 
+0

OP가 요구하는 것을 원격으로 수행하지 않습니다. 앞으로 사용자가 묻는 것을 정확히 이해하지 못하면 대답을 게시하지 마십시오. –

4

XML의 속성을 사용하고 사용자 로그인에서 이름을 지정할 수 있습니다.

static public void CreateFile(string username) 
{ 
    XmlWriter xmlW = XmlWriter.Create(username + ".xml"); 
    xmlW.WriteStartDocument(); 
    xmlW.WriteStartElement("Listofboxs"); 

//add the box following this canvas 
    xmlW.WriteStartElement("box"); 
    xmlW.WriteAttributeString("nameofbox", "exampleName"); 
    xmlW.WriteAttributeString("valueofbox", "exampleValue"); 
    xmlW.WriteEndElement(); 
    // 
    xmlW.WriteEndElement(); 
    xmlW.WriteEndDocument(); 
    xmlW.Close(); 
} 

이렇게하면 사용자 이름으로 첫 번째 파일을 만들 수 있습니다. 응용 프로그램을 다시로드 둘째 는 이러한 정보를 표시하기 위해, 여기에 몇 가지 코드입니다 :

static public Dictionary<string, string> getBoxValue(string username) 
{ 
    Dictionary<string, string> listofbox = new Dictionary<string, string>(); 

    XmlDocument xmldoc = new XmlDocument(); 
    xmldoc.Load(@"./" + username + ".xml"); 
    XmlNode root = xmldoc.DocumentElement; 

    foreach (XmlNode box in root) 
    { 
listofbox.Add(box.Attributes[0].Value.ToString(),box.Attributes[1].Value.ToString()); 
    } 
return listofbox; 
} 

각 노드를 들어, 사전으로 문자열의 상자와 값의 이름을 한 쌍을 추가합니다. 상자를 채우는 데 사용할 수 있습니다. 이 코드는 약간의 비 효율성이있을 수 있음을 알고 있습니다 ("using"등을 사용해야합니다)하지만 도움이되기를 바랍니다.

0

xml 파일을 읽고 쓰려면 두 개의 열을 정의하는 데이터 집합을 프로젝트에 추가하면됩니다. 텍스트 상자의 이름을 나타내는 열 하나와 값을 나타내는 열이 있습니다. 데이터 세트에서 WriteXml 및 ReadXml 메서드를 사용하여 읽고 쓸 수 있습니다.

시작시 xml을로드하려면 양식의로드 이벤트에 가입해야합니다. Formclosing 이벤트에서는 데이터를 작성할 수 있습니다.

TextBox tb = this.Controls.Find("buttonName", true); 
if(tb != null) 
    // set the value for the tb