我正在尋找一種方法來調用全局方法將數據記錄到同一文本文件和列表框中的任何位置(例如在不同的課程中)。創建列表<String>的引用或淺表副本<String>要綁定到列表框
我的實現涉及到有一個靜態類,它記錄到文本文件並更新列表數據。
列表數據是一個全局變量,可以訪問命名空間中的任何位置。最後,我希望通過綁定
listbox1.DataSource = logList;
會解決問題。但是,顯然它執行深度複製而不是淺度複製。 :(
有沒有列表的引用綁定方式不是克隆
這裏有涉及代碼:
namespace Test
{
static class LOGS
{
public static void LOG_PRINT(string logMessage)
{
try
{
if (logMessage == "") return;
// Output to text file.
using (StreamWriter w = System.IO.File.AppendText(cls_globalvariables.systemlogpath))
{
w.WriteLine("[" + DateTime.Now + "][" + logMessage + "]");
w.Close();
}
// Save to memory
cls_globalvariables.logList.Add(logMessage);
}
catch (Exception)
{ }
}
} //
public static class cls_globalvariables
{
public static List<string> logList = new List<string>();
public static string systemlogpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\logs.txt";
.....
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// Model -> View Concept
listBox1.DataSource = cls_globalvariables.logList;
LOGS.LOG_PRINT("Hello");
} //
}
}
您只是引用列表。沒有複製/深層複製或shollow複製。什麼是不工作的期望?我想你需要一個BindingList。 –
Peter
2015-02-09 10:03:04
向列表中添加字符串條目後,列表框不顯示任何內容。 但如果我通過在將列表綁定到數據源之前先執行add()方法來交換它們,它會顯示列表。 – Xegara 2015-02-09 10:04:26