void MergeDashboard(DashboardToolbarItemClickEventArgs args) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Dashboard files (*.xml)|*.xml"; openFileDialog.Multiselect = true; if (openFileDialog.ShowDialog() == DialogResult.OK) { dashboardDesigner.Dashboard.BeginUpdate(); try { List <string> rejectedDashboard = new List <string>(); foreach (string fileName in openFileDialog.FileNames) { using (Dashboard dashboard = new Dashboard()) { dashboard.LoadFromXml(fileName); DashboardMerger dashboardMerger = new DashboardMerger(dashboardDesigner.Dashboard); if (!dashboardMerger.MergeDashboard(dashboard)) { rejectedDashboard.Add(Path.GetFileName(fileName)); } } } if (rejectedDashboard.Count > 0) { MessageBox.Show(String.Format("The following dashboard has not been merged{0}{1}", Environment.NewLine, String.Join(Environment.NewLine, rejectedDashboard))); } if ((openFileDialog.FileNames.Length - rejectedDashboard.Count) > 0) { dashboardChanged = true; } } finally { dashboardDesigner.Dashboard.EndUpdate(); dashboardDesigner.ReloadData(); } } }