2016-04-08 19 views
2

私はWindowsフォームアプリケーションで作業しています。テキストボックスのインデックスが保存され、このコードのリストボックスのように示すことができる。ListBoxとTextBoxにJSONファイルをロードするC#

また、私は次のコードで(リストボックスの項目をクリックすることによって)を編集するには、再度テキストボックスにオブジェクトを収集:

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ファイルにListBoxで表示するために使用できる 'functionName'オブジェクトがあります。

私の質問は次のとおりです:このファイルをロードするにはどうすればネイティブ読み込み/ファイルを開くダイアログボックスを開き、ListBoxのオブジェクトを表示して再度編集できますか?私は次のコードでそれを作るために試みたが、それは動作しませんどのように

そして、ここで:

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(); 
       } 

      } 
     } 
+0

OpenFileDialogがダイアログの選択肢です。変更するたびにファイルを書き直す必要があります。 – Mafii

+0

さて、私はそれを使って作業しましたが、私は既にOpenFileDialogでそれをやろうとしましたが、できませんでした。私はどうすればいいのですか? –

+0

https://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog(v=vs.110).aspx下部にスクロールすると、 – Mafii

答えて

0

私はリストとして「DeserializeObject」をキャストすることによって問題を解決してきたし、それが行われています。ここでの変更点:

  ... 

      var loadedFile = JsonConvert.DeserializeObject<List<FunctionData>>(jsonFile); 
関連する問題