private void buttonAddContest_Click(object sender, EventArgs e)
        {
            if (m_TabIndex < k_MaxNumberOfContests)
            {
                TabPageObserver tabPageContest = new TabPageObserver();

                if (m_TabIndex == 0)
                {
                    tabPageContest.Padding = new Padding(3);
                }

                FormAddContest newFormContest = new FormAddContest();
                newFormContest.ShowDialog();

                if (newFormContest.DialogResult == DialogResult.OK)
                {
                    IContest newContest = ContestFactory.CreateContest(
                        m_TabIndex + 1,
                        newFormContest.Status,
                        newFormContest.ImagePath,
                        newFormContest.NumberOfWinners,
                        newFormContest.LikeRequired,
                        newFormContest.CommentRequired);
                    m_ListOfContests.Add(newContest);

                    try
                    {
                        newContest.PostContestStatus();
                    }
                    catch (FacebookOAuthException)
                    {
                        MessageBox.Show("Failed to post status: No permissions.");
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }

                    tabPageContest.Location = new Point(104, 4);
                    tabPageContest.Name     = string.Format("tabPageContest{0}", m_TabIndex + 1);
                    tabPageContest.Size     = new Size(867, 616);
                    tabPageContest.TabIndex = m_TabIndex;
                    tabPageContest.Text     = string.Format("Contest {0}", m_TabIndex + 1);
                    tabPageContest.UseVisualStyleBackColor = true;
                    tabControlContest.Controls.Add(tabPageContest);
                    buildContest(tabPageContest);
                    m_TabIndex++;

                    m_ReportDeletedContestDelegate += tabPageContest.m_ReportDeletedContestObserver;
                }
            }
            else
            {
                MessageBox.Show("You have reached the maximum number of contests.");
            }
        }
        private void buttonDeleteConstest_Click(object sender, EventArgs e)
        {
            Button          buttonDelete    = (Button)sender;
            TabPageObserver tabPageToDelete = buttonDelete.Parent as TabPageObserver;

            m_ReportDeletedContestDelegate -= tabPageToDelete.m_ReportDeletedContestObserver;
            m_TabIndex--;
            tabControlContest.TabPages.Remove(tabPageToDelete);
            m_ListOfContests.RemoveAt((buttonDelete.Name[buttonDelete.Name.Length - 1] - '0') - 1);

            if (m_TabIndex != 0)
            {
                m_ReportDeletedContestDelegate.Invoke(int.Parse(tabPageToDelete.Text.Split(' ')[1]));
            }
        }
 public TabPageObserver() : base()
 {
     m_ReportDeletedContestObserver = new ReportDeletedContestDelegate(this.UpdateIndexNumber);
 }