我正在开发 Windows 窗体应用程序。文本框索引可以通过以下代码保存并显示为列表框:
private List<FunctionData> funcParamList = new List<FunctionData>();
...
private void addFuncButton_Click(object sender, EventArgs e)
{
FunctionData funcParams = new FunctionData();
funcParams.blabla1name = blabla1.Text;
funcParams.blabla2name = blabla2.Text;
...
if (funcParams.isValid())
{
funcParamList.Add(funcParams);
functionListBox.Items.Add(functionNameBox.Text);
}
我还再次将对象收集到 TextBox 以使用以下代码进行编辑(通过单击 ListBox 项目):
private void getParams(FunctionData data)
{
blabla1.Text = data.blabla1name;
blabla2.Text = data.blabla2name;
functionNameBox.Text = data.functionName;
return;
}
private void functionListBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (functionListBox.SelectedItem == null) { return; }
foreach (var obj in funcParamList)
{
if (obj.functionName == functionListBox.SelectedItem.ToString())
{
getParams(obj);
}
}
}
并将它们保存为 JSON 文件:
private void saveFileButton_Click(object sender, EventArgs e)
{
fileName = fileNameBox.Text;
string jsonFunc = JsonConvert.SerializeObject(funcParamList);
System.IO.File.WriteAllText(@"<blablapath>\" + fileName + ".txt", jsonFunc);
}
JSON 文件中有“functionName”对象,我可以用它在 ListBox 上显示。
我的问题是:如何加载此文件购买 native 加载/打开文件对话框并在列表框中显示对象并再次编辑它们?
这里是我尝试使用以下代码实现它的方法,但它不起作用:
private void loadFileButton_Click(object sender, EventArgs e)
{
OpenFileDialog loadFileDialog = new OpenFileDialog();
...
if (loadFileDialog.ShowDialog() == DialogResult.OK)
{
string jsonFileName = loadFileDialog.FileName;
string jsonFile = File.ReadAllText(jsonFileName);
dynamic loadedFile = JsonConvert.DeserializeObject(jsonFile);
//if (functionListBox.SelectedItem == null) { return; }
foreach (var obj in loadedFile)
{
if (obj.functionName != null)
{
functionListBox.Items.Add(obj.functionName);
getParams(obj); // I get exception here
funcParamList.Add(loadedFile);
functionListBox.Refresh();
}
}
}
最佳答案
我通过将“DeserializeObject”转换为 List 解决了这个问题,并且完成了。这里的变化:
...
var loadedFile = JsonConvert.DeserializeObject<List<FunctionData>>(jsonFile);
关于c# - 将 JSON 文件加载到 ListBox 和 TextBox C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36498501/