2016-04-08 37 views
2

Bir Windows Form Uygulaması üzerinde çalışıyorum. Metin kutusu endeksi bu kodla kaydedilir ve ListBox olarak gösterilebilir:JSON Dosyasını ListBox ve TextBox'a Yükle 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); 
      } 
     } 
    } 

Ve kaydedin:

Ayrıca Aşağıdaki kod ile (ListBox öğeyi tıklatarak) düzenlemek için tekrar TextBox nesneleri toplamak onları ile JSON olarak dosyaya:

private void saveFileButton_Click(object sender, EventArgs e) 
    { 
     fileName = fileNameBox.Text; 
     string jsonFunc = JsonConvert.SerializeObject(funcParamList); 
     System.IO.File.WriteAllText(@"<blablapath>\" + fileName + ".txt", jsonFunc); 
    } 

ben ListBox gösteriliyor için kullanabilirsiniz JSON dosyasındaki 'İşlevAdı' nesne yoktur.

Sorum şu: Bu dosyayı nasıl yükleyebilirim Native Load/Open File Dialog'u alıp nesneleri ListBox'ta gösterebilir ve bunları yeniden düzenleyebilir miyim? Aşağıdaki kod ile bunu yapmak için denedim ama çalışmıyor nasıl

Ve burada:

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 iletişim kutusu için seçiminizdir. Bir şeyi her değiştirdiğinizde dosyayı yeniden yazmanız gerekir. – Mafii

+0

Tamam, bununla çalışacağım, bunu OpenFileDialog ile yapmaya çalıştım ama başaramadım. Nasıl yapmalıyım? –

+0

https://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog(v=vs.110).aspx aşağıya doğru ilerleyin, bir örnek – Mafii

cevap

0

ben liste olarak 'DeserializeObject' döküm yoluyla sorunu hallettim ve bitti. Değişiklikler:

İlgili konular