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