private async void treeView_Mailbox_AfterSelect()

in Office365APIEditor/UI/MailboxViewerForm.cs [504:580]


        private async void treeView_Mailbox_AfterSelect(object sender, TreeViewEventArgs e)
        {
            // Show information of selected folder.

            // Reset DataGrid.
            for (int i = dataGridView_FolderProps.Rows.Count - 1; i >= 0; i--)
            {
                dataGridView_FolderProps.Rows.RemoveAt(i);
            }

            for (int i = dataGridView_FolderProps.Columns.Count - 1; i >= 0; i--)
            {
                dataGridView_FolderProps.Columns.RemoveAt(i);
            }

            if (treeView_Mailbox.InvokeRequired)
            {
                // Another thread is working. We should do nothing.
                return;
            }

            // Get folder props.    

            if (treeView_Mailbox.SelectedNode == null || treeView_Mailbox.SelectedNode.Tag == null)
            {
                // Perhaps the user chose another folder by using the keyboard.
                return;
            }

            FolderInfo info = (FolderInfo)treeView_Mailbox.SelectedNode.Tag;

            ViewerHelper.Data.MicrosoftGraphBaseObject outlookFolder;

            try
            {
                switch (info.Type)
                {
                    case FolderContentType.Message:
                    case FolderContentType.MsgFolderRoot:
                    case FolderContentType.Drafts:
                        outlookFolder = await viewerRequestHelper.GetMailFolderAsync(info.ID);
                        break;
                    case FolderContentType.Contact:
                        outlookFolder = await viewerRequestHelper.GetContactFolderAsync(info.ID);
                        break;
                    case FolderContentType.CalendarGroup:
                        outlookFolder = await viewerRequestHelper.GetCalendarGroupAsync(info.ID);
                        break;
                    case FolderContentType.Calendar:
                        outlookFolder = await viewerRequestHelper.GetCalendarAsync(info.ID);
                        break;
                    case FolderContentType.Task:
                        outlookFolder = await viewerRequestHelper.GetToDoTaskListAsync(info.ID);
                        break;
                    default:
                        return;
                }

                // Add columns.
                dataGridView_FolderProps.Columns.Add("Property", "Property");
                dataGridView_FolderProps.Columns.Add("Value", "Value");
                dataGridView_FolderProps.Columns.Add("Type", "Type");

                // Add rows.
                foreach (var item in outlookFolder.GetRawProperties())
                {
                    DataGridViewRow propTotalItemCount = new DataGridViewRow();
                    propTotalItemCount.CreateCells(dataGridView_FolderProps, new object[] { item.Key, (item.Value == null) ? "" : item.Value.ToString(), (item.Value == null) ? "null" : item.Value.GetType().ToString() });
                    dataGridView_FolderProps.Rows.Add(propTotalItemCount);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Office365APIEditor");
                return;
            }
        }