我正在嘗試編寫一個議程。爲每個聯繫人顯示一個小表格(這在MDI父表格中)。用我當前的代碼,所有聯繫人都寫入文件;我呈現信息的方式,一次顯示所有聯繫人(這肯定不會吸引最終用戶)。C#讀取文本文件內容並按字母順序拆分
當然,我需要按字母順序呈現聯繫人。文件每一行中的第一個字段是聯繫人姓,這可以幫助我排序。這位新手卡住的地方在於,如何根據姓氏的第一個字母來提取線條,這樣我就可以在真正的議程中呈現信息?
我看到別人的問題,答案是子列表和「分組」功能。但是沒有解釋代碼,那麼這對我來說就像是中國人。
我在想也許我的「所有聯繫人文件」分成基於姓的第一個字母的小文件(但這將是太多的小文件,也許不是一個好的做法?)。如果這不是一個壞主意,那麼如何實現?
我創建了一個「Person」類。而與此代碼,我添加新聯繫人:
private void btn_CM_addNew_Click(object sender, EventArgs e)
{
_contact.FirstName = txt_CM_name.Text;
_contact.LastName = txt_CM_lastName.Text;
//Person.lista.Add(_contact);
StreamWriter file = new StreamWriter("C:\\CA_Contacs.txt", true);
file.WriteLine(_contact.ToString());
file.Close();
this.Close();
}
有了這個代碼,我顯示「聯繫卡」:
if ((new FileInfo("C:\\CA_Contacs.txt").Exists == true))
{
var reader = new StreamReader(File.OpenRead("C:\\CA_Contacs.txt"));
while (!reader.EndOfStream)
{
Person _contact = new Person();
var line = reader.ReadLine();
var attributes = line.Split(',');
_contact.LastName = attributes[0];
_contact.FirstName = attributes[1];
ContactCard contactCardItem = new ContactCard();
contactCardItem.MdiParent = this;
contactCardItem.Text = _contact.LastName + ", " + _contact.FirstName;
contactCardItem.Contact = _contact;
contactCardItem.Show();
this.LayoutMdi(MdiLayout.TileVertical);
}
}
你有什麼建議給接觸什麼方法可以按字母順序顯示?
換句話說,如何從文件中提取所有以「A」或「a」開頭的行,將所有這些行放入自己的組中(列表,子列表,文件,其他結構),所以我以後可以只提供該組,而不是「CA_Contacs.txt」文件中的所有聯繫人?
感謝您的詳細解釋。我將首先理解你提出的代碼的作用,然後將其集成到我的項目中:) – DMS
嗨,菜鳥問題:如何定義密鑰? – DMS
@DMS這行:通過contact.LastName.First()將contact組中的所有聯繫人組聯繫到由contact.LastName.First()(即鍵)定義的組中,這是否有意義? – flindeberg