private void ExportBtn_Click(object sender, EventArgs e) { bool locked = false; Monitor.TryEnter(portal, 100, ref locked); if (!locked) { return; } try { TreeNode node = blockTree.SelectedNode; if (node.Tag is Siemens.Engineering.SW.Blocks.PlcBlock) { Siemens.Engineering.SW.Blocks.PlcBlock block = node.Tag as Siemens.Engineering.SW.Blocks.PlcBlock; String block_name = block.GetAttribute("Name") as String; if (block_name != null) { exportFileDialog.FileName = block_name + ".xml"; } if (exportFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { block.Export(new FileInfo(exportFileDialog.FileName), ExportOptions.WithDefaults); } catch (Exception ex) { MessageBox.Show("Failed to export block: " + ex.Message); } } } else if (node.Tag is Siemens.Engineering.Hmi.Screen.Screen) { Siemens.Engineering.Hmi.Screen.Screen screen = node.Tag as Siemens.Engineering.Hmi.Screen.Screen; String screen_name = screen.Name; if (screen_name != null) { exportFileDialog.FileName = screen_name + ".xml"; } if (exportFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { screen.Export(new FileInfo(exportFileDialog.FileName), ExportOptions.WithDefaults); } catch (Exception ex) { MessageBox.Show("Failed to export screen: " + ex.Message); } } } else if (node.Tag is Siemens.Engineering.Hmi.Screen.ScreenTemplate) { Siemens.Engineering.Hmi.Screen.ScreenTemplate template = node.Tag as Siemens.Engineering.Hmi.Screen.ScreenTemplate; String name = template.Name; if (name != null) { exportFileDialog.FileName = name + ".xml"; } if (exportFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { template.Export(new FileInfo(exportFileDialog.FileName), ExportOptions.WithDefaults); } catch (Exception ex) { MessageBox.Show("Failed to export screen template: " + ex.Message); } } } else if (node.Tag is Siemens.Engineering.Hmi.Screen.ScreenPopup) { Siemens.Engineering.Hmi.Screen.ScreenPopup popup = node.Tag as Siemens.Engineering.Hmi.Screen.ScreenPopup; String name = popup.Name; if (name != null) { exportFileDialog.FileName = name + ".xml"; } if (exportFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { try { popup.Export(new FileInfo(exportFileDialog.FileName), ExportOptions.WithDefaults); } catch (Exception ex) { MessageBox.Show("Failed to export screen popup: " + ex.Message); } } } } finally { Monitor.Exit(portal); } }