2011-06-05 75 views
0

我一直在研究一個程序,隨着遊戲我和我的一些朋友一起玩,到目前爲止我所做的所有事情都是使界面,我想要的界面提前幫助,因爲我知道不需要它。我想製作一個GUI,從文本文件中讀取一個字符的數據,用它填充文本框,並能夠用兩個框執行方程式,然後通過點擊下一步從該文本文件移動到另一個字符。在數據讀取 樣品是: InterfaceC#從streamreader中讀取多個配置文件,並給出輸出

Hark <- new character 
    5 
    2 
    6 
    40.0 
    12.00 
    Caro <- new character 
    6 
    1 
    8 
    38.0 
    10.00 
    Ethan <- new character 
    4 
    5 
    42.0 
    15.00 

(以上是不實際的代碼,它是如何貼) 因此,「名」到「字符NUM」會剛剛data.Readline填充() ;來自閱讀器,但是HP和護甲需要一起計時才能獲得比率(擊中計算比例按鈕),所有數據從名稱到比例都將放在按鈕下方的文本框中,下一個按鈕將循環到下一個按鈕字符。 任何幫助將不勝感激,在此先感謝。

+1

是什麼問題? – BrokenGlass 2011-06-05 03:50:44

+0

只是有關如何做到這一點的任何建議。我知道如何從1個字符讀取數據,但不能讀取多個字符。 – Mark 2011-06-05 03:54:22

+0

只是一個念頭:將數據存儲在一個XML結構中,然後加載到一個XmlDocument中......可能會過度殺傷.... – 2011-06-05 04:11:12

回答

0

我可能會做一個File.ReadAllText(或類似的東西)成一個字符串。這樣你釋放文件句柄。然後,您可以遍歷從文件中讀取的字符串中的字符,並執行任何您想要的操作。

1

用XML序列化/反序列化來做它會容易得多。

下面是一個完整的演示。它創建兩個字符的列表,將其序列化爲XML,然後將其反序列化爲新的列表。這至少會照顧到它的存儲方面。

using System.Collections.Generic; 
using System.IO; 
using System.Xml.Serialization; 

namespace XmlDemo 
{ 

public class CharacterAttributes 
{ 
    public string Name { get; set; } 
    public int Strength { get; set; } 
    public int Dexterity { get; set; } 
} 
class Program 
{ 
    static void Main(string[] args) 
    { 
     var characters = new List<CharacterAttributes> 
          { 
           new CharacterAttributes 
            { 
             Name = "Throgdor the Destroyer", 
             Strength = 5, 
             Dexterity = 10 
            }, 
           new CharacterAttributes 
            { 
              Name = "Captain Awesome", 
              Strength = 100, 
              Dexterity = 9 
            } 
          }; 
     SerializeToXML(characters); 
     var charactersReloaded = DeserializeFromXML(@"C:\temp\characters.xml"); 

    } 

    static public void SerializeToXML(List<CharacterAttributes> characters) 
    { 
     var serializer = new XmlSerializer(typeof(List<CharacterAttributes>)); 
     var textWriter = new StreamWriter(@"C:\temp\characters.xml"); 
     using (textWriter) 
     { 
      serializer.Serialize(textWriter, characters); 
      textWriter.Close();     
     } 

    } 

    public static List<CharacterAttributes> DeserializeFromXML(string path) 
    { 
     var serializer = new XmlSerializer(typeof(List<CharacterAttributes>)); 
     var textReader = new StreamReader(path); 
     var deserializedCharacters = new List<CharacterAttributes>(); 
     using (textReader) 
     { 
      deserializedCharacters = serializer.Deserialize(textReader) as List<CharacterAttributes>;  
     } 
     return deserializedCharacters; 
    } 

} 
} 
相關問題