public bool? ShowDialog ()
{
EnsureMainThread ();
IntPtr windowing_system = NativeMethods.runtime_get_windowing_system ();
IntPtr result = NativeMethods.moon_windowing_system_show_open_file_dialog (windowing_system,
"Open",
allow_multiple_selection,
filter,
filter_index);
if (result == IntPtr.Zero){
// when called several times the previous results are still available after a Cancel
return false;
}
uint inc = (uint) IntPtr.Size;
IntPtr p;
int n = 0;
for (uint ofs = 0; (p = Marshal.ReadIntPtr ((IntPtr)((ulong)result + ofs))) != IntPtr.Zero; ofs += inc)
n++;
files = new FileInfo [n];
for (uint i = 0, ofs = 0; (p = Marshal.ReadIntPtr ((IntPtr)((ulong)result + ofs))) != IntPtr.Zero; ofs += inc)
files [i++] = new FileInfo (Marshal.PtrToStringAnsi (p));
NativeMethods.g_free_pinvoke (result);
return true;
}
private void OpenClick(object sender, RoutedEventArgs e) { OpenFileDialog openDialog = new OpenFileDialog(); openDialog.Filter = "clients.json|clients.json"; //http://www.wpf-tutorial.com/dialogs/the-openfiledialog/ openDialog.ShowDialog(); string ClientFile = openDialog.FileName; openDialog.Filter = "workers.json|workers.json"; openDialog.ShowDialog(); string WorkerFile = openDialog.FileName; if (ClientFile == "" || WorkerFile == "") { MessageBox.Show("Select both files!"); return; } try { Clients.RemoveAll(t => t.Name == t.Name); Clients.AddRange(JsonConvert.DeserializeObject<List<Person>>(File.ReadAllText(ClientFile))); ClientData.Items.Refresh(); ClientGrid.IsEnabled = true; Workers.RemoveAll(t => 1 == 1); Workers.AddRange(JsonConvert.DeserializeObject<List<Person>>(File.ReadAllText(WorkerFile))); WorkerData.Items.Refresh(); WorkerGrid.IsEnabled = true; } catch (Exception exc) { MessageBox.Show("Something went wrong! " + exc.Message); } }