private void LoadProjects()
        {
            CB_ProjectList.InvokeIfRequired(s =>
            {
                s.DataSource = null;
                s.Items.Clear();
            });

            IEnumerable <PublishedProject> projectList =
                ProjContext.LoadQuery(ProjContext.Projects.Include(p => p.Draft.Name, p => p.Draft, p => p.IsCheckedOut));

            ProjContext.ExecuteQuery();
            Dictionary <string, PublishedProject> projList = new Dictionary <string, PublishedProject>
            {
                { "Select a Project", null }
            };

            foreach (PublishedProject project in projectList)
            {
                projList.Add(project.Draft.Name, project);
            }
            CB_ProjectList.InvokeIfRequired(s =>
            {
                CB_ProjectList.SelectedIndexChanged += CB_ProjectList_SelectedIndexChanged;
                CB_ProjectList.DropDownStyle         = ComboBoxStyle.DropDown;
                CB_ProjectList.AutoCompleteMode      = AutoCompleteMode.SuggestAppend;
                CB_ProjectList.AutoCompleteSource    = AutoCompleteSource.ListItems;
                CB_ProjectList.DataSource            = new BindingSource(projList, null);
                CB_ProjectList.DisplayMember         = "Key";
                CB_ProjectList.ValueMember           = "Value";
            });
        }
        private void LoadProjectInfo()
        {
            DGV_Project.InvokeIfRequired(dg =>
            {
                dg.Columns.Clear();
                dg.DataSource         = null;
                dg.AllowUserToAddRows = false;
            });

            CB_ProjectList.InvokeIfRequired(cb => _publishedProject = cb.SelectedValue as PublishedProject);
            if (_publishedProject == null)
            {
                return;
            }

            if (Settings.Default.LoadAllProperties)
            {
                LoadQueryFields(_publishedProject.Draft);
            }
            else
            {
                ProjContext.Load(_publishedProject.Draft, p => p, p => p.Tasks, p => p.Assignments, p => p.ProjectResources);
            }
            ProjContext.ExecuteQuery();
            List <PropertyInfo> retrievedFields = DisplayFields(_publishedProject.Draft);
            DataTable           dt = CreateDataTableForDisplay(retrievedFields);

            dt.ExtendedProperties.Add(dt.Rows.Count, _publishedProject.Draft);
            DataRow dr = dt.NewRow();

            retrievedFields.ForEach(prop => SetPropertyValueInDataColumn(dr, prop, _publishedProject.Draft));
            dt.Rows.Add(dr);

            DGV_Project.InvokeIfRequired(dg =>
            {
                dg.DataSource = dt;
                dg.Refresh();
                TP_Tasks.Text       = $"Tasks({_publishedProject.Draft.Tasks.Count()})";
                TP_Assignments.Text = $"Assignments({_publishedProject.Draft.Assignments.Count()})";
                TP_Resources.Text   = $"Resources({_publishedProject.Draft.ProjectResources.Count()})";
                if (_publishedProject.Draft.Tasks.Any())
                {
                    LoadTasksInfo(_publishedProject.Draft.Tasks);
                }
                if (_publishedProject.Draft.Assignments.Any())
                {
                    LoadAssignments(_publishedProject.Draft.Assignments);
                }
                if (_publishedProject.Draft.ProjectResources.Any())
                {
                    LoadProjectResources(_publishedProject.Draft.ProjectResources);
                }
            });
        }