我正在製作一個程序,輸入項目的名稱及其描述。然後將其添加到列表框中,完成後,可以將所有項目保存到「txt」文件中。 (使用StreamWriter)。這個程序還有一個編輯按鈕,它允許你編輯列表框中的描述,首先從列表框中刪除它,然後在文本框中顯示它(所以你可以編輯它)多行文本框顯示多行字符串爲單行
如果描述是多線程的,當我在列表框中選擇它時,它會成功地顯示它,然後單擊將顯示在文本框中的編輯按鈕。 但是,如果我將第一個文件夾中的所有項目保存到文件。然後再次打開文件,以便將項目加載回列表框。然後單擊編輯按鈕...
多行說明將在文本框中顯示爲單行說明。
我不知道爲什麼 - 但我也製作了一個標籤,它將顯示文本框假設顯示的確切字符串,並且標籤顯示它多行,而文本框不顯示!
該字符串絕對是多行的,但多行文本框使用StreamReader將項加載回列表框後顯示爲單行。多行的字符串的
實施例:(名爲 「theString1」)
這是第1行
這是第2行
使用以下代碼:TextBox1.Text = theString1;
此出現在文本框中:
This is line1 This i s line2
但是,如果我使用相同的代碼與標籤。它會正確顯示它。
如果有人能向我解釋爲什麼會發生這種情況,我會更加高興。我只需要一個解釋。 在此先感謝。
--- [詳細信息] ---
只要你知道。我自己想出了這個代碼,所以它可能是錯誤的。 如果你告訴我一個更好的方法來做到這一點,我會很高興。
我正在使用一個列表來存儲描述文本+項目名稱。我用'`'將這兩個字符分開,然後分割字符串(參見代碼)。
這是單擊編輯按鈕時發生的代碼。它從 列表框中刪除項目並將其顯示在文本框中,以便您可以編輯和添加再次列表框:
int index = listBox.SelectedIndex;
itemName.Text = listBox.SelectedItem.ToString();
var descVar = descList.ElementAt(index).Split('`');
string theString1 = descVar[1];
TextBox1.Text = theString1;
這是怎麼保存到一個文件:
FileDialog save = new SaveFileDialog();
save.Title = "Save information...";
save.DefaultExt = "Text File|*.txt";
save.Filter = "Text File|*.txt";
if (save.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(save.FileName);
foreach (string s in listBox.Items) //This writes the names of item names.
{
sw.WriteLine(s);
}
sw.WriteLine("`1`"); //I use this to seperate the item names from description.
foreach (string s in descList) //This writes the descriptions that are stored in a list named "descList".
{
sw.WriteLine(s);
sw.WriteLine("``"); //I use this to seperate descriptions from each other because they are multi-line.
}
sw.WriteLine("`2`"); //Just something so I know where it ends. :D
sw.Close();
}
else
{
}
而且這是怎麼加載:(這絕對是可以更好!)
FileDialog load = new OpenFileDialog();
load.Title = "Load information...";
load.DefaultExt = "Text File|*.txt";
load.Filter = "Text File|*.txt";
if (load.ShowDialog() == DialogResult.OK)
{
List<string> loadDesc = new List<string>(); //Don't ask you will see why
descList.Clear();
while (listBox.Items.Count > 0) //This removes all items in the listbox to load new ones.
{
int index = 0;
listBox.Items.RemoveAt(index);
descList.Clear();
itemName.Text = "";
}
StreamReader rw = new StreamReader(load.FileName);
for (; true;)
{
string read = rw.ReadLine();
if (read == "`1`") //When it reaches the separator I made it stops reading.
{
break;
}
else
{
listBox.Items.Add(read);
}
}
for (; true;)
{
string read = rw.ReadLine();
if (read == "`2`")
{
break;
}
else
{
loadDesc.Clear();
loadDesc.Add(read);
for (; true;) //Please tell me if this can be done differently.
{
string read2 = rw.ReadLine();
if (read2 != "``") //This will keep reading the whole description until it reaches the separator.
{
loadDesc.Add(read2); //Adds each line into the list I created.
}
else
{
break;
}
}
string oneBigString = string.Join("\n", loadDesc); //This basically converts all strings in a list into one string.
descList.Add(oneBigString); //And this finally add the string to the main list from where it then loads.
}
}
}
else
{
}
我相信,就是這樣。 如果您還有其他需要的東西 - 告訴我。
向我們展示字符串是如何構建,如何你把它保存到文件中,以及如何'從文件 – 2013-02-14 20:01:09
讀取並顯示文本框代碼,您是否添加 –
2013-02-14 20:05:21
請不要重複標題問題標題。 – 2013-02-14 20:07:32