다음 문제에 대한 해결책을 찾지 못했습니다.
파일에 TreeView를 저장 /로드하는 작업 코드가 있지만 Properties.Settings.Default에 저장하고 싶습니다.
불행히도이 줄에 "no map for object"라는 오류가 발생합니다.
object obj = bf.Deserialize(ms);
다음은 (비) 직렬화에 대한 전체 코드입니다
.이 문제를 해결하는 방법을 모릅니다. :(
public static void SaveTreeView(TreeView tree)
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, tree.Nodes.Cast<TreeNode>().ToList());
ms.Position = 0;
var sr = new StreamReader(ms);
Properties.Settings.Default.tree = sr.ReadToEnd();
Properties.Settings.Default.Save();
}
}
public static void LoadTreeView(TreeView tree)
{
using (MemoryStream ms = new MemoryStream())
{
var sw = new StreamWriter(ms);
sw.WriteLine(Properties.Settings.Default.tree);
sw.Flush();
ms.Seek(0, SeekOrigin.Begin);
BinaryFormatter bf = new BinaryFormatter();
object obj = bf.Deserialize(ms);
TreeNode[] nodeList = (obj as IEnumerable<TreeNode>).ToArray();
tree.Nodes.AddRange(nodeList);
}
}
아무도 아이디어가 있습니까?
감사합니다.
이것을 시도하십시오
public static void SaveTree(TreeView tree)
{
using (var ms = new MemoryStream())
{
new BinaryFormatter().Serialize(ms, tree.Nodes.Cast<TreeNode>().ToList());
Properties.Settings.Default.tree = Convert.ToBase64String(ms.ToArray());
Properties.Settings.Default.Save();
}
}
public static void LoadTree(TreeView tree)
{
byte[] bytes = Convert.FromBase64String(Properties.Settings.Default.tree);
using (var ms = new MemoryStream(bytes, 0, bytes.Length))
{
ms.Write(bytes, 0, bytes.Length);
ms.Position = 0;
var data = new BinaryFormatter().Deserialize(ms);
tree.Nodes.AddRange(((List<TreeNode>)data).ToArray());
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다