0

ユーザーがテキストボックスのリストにログインしてデータを保存し、アプリを閉じても、データがテキストボックスに残っているアプリがあります。

私は.txtと.xmlを調べて、どちらが最適な形式であるかを調べています。XMLシリアル化と.xmlファイルに含まれるコードについても調査しましたが、データが正しいボックスに読み込まれるようにテキストボックスの名前を変更する必要がありますか?ページ自体に約15個のテキストボックスがあります。

System.Xml.Serializationを使用して追加しました。私の形に。また、ユーザーがログインすると既存のフォームが開き、ユーザーがログアウトするとフォームが閉じます。

すべてのデータが表示されているページをロードする方法、データを保存する方法(テキストボックスページ用の保存ボタンを作成しました)、およびファイルの読み取りが同じものを読み取ってロードしない方法について少し混乱していますか?

Visual Studio 2012 Winforms c#を使用しています

4

3 に答える 3

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」などを使用する必要があります)、お役に立てば幸いです。

于 2013-02-25T14:36:11.453 に答える
0

あなたの問題を完全に理解することはできません。あなたが望むものをあなたのプログラムのコーディングに示してください。ページの読み込み中にすべてのテキストボックスデータをクリアしてみてください。

    private void Form1_Load(object sender, EventArgs e)
    {
        textBox1.Text = string.Empty;
    }
于 2013-02-25T14:14:08.133 に答える
0

xml ファイルを読み書きするには、2 つの列を定義するプロジェクトにデータセットを追加します。テキストボックスの名前用の 1 つの列と値用の別の列。データセットでは、メソッド WriteXml と ReadXml を使用して読み取りと書き込みを行うことができます。

起動時に xml をロードするには、フォームのロード イベントをサブスクライブする必要があります。また、フォームクロージング イベントでは、データを書き込むことができます。

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...)
}

load-part でテキストボックスの値を設定するには、次のコードを使用できます。

TextBox tb = this.Controls.Find("buttonName", true);
if(tb != null)
   // set the value for the tb
于 2013-02-25T14:55:59.727 に答える