Q: WindowsForm - Como adicionar duas DataGridViewButtonCell em uma mesma cell? É possível adicionar dois botões do tipo DataGridViewButtonCell na mesma célula em uma DataGridView? Pesquisei bastante e até agora não consegui encontrar nenhuma solução.
Edit 1:
Por exemplo, queria adicionar um botão [Manhã] e outro [Tarde] em uma mesma cell... Tentei adicionar uma panel, mas ele não aceita, porque o DataGridViewButtonCell não é do tipo Control.
Edit 2: 
Isso é o que consigo fazer atualmente...

Edit 3: 
Bom, pensei em uma solução pra esse modelo de negócio. @RovannLinhalis deu a ideia de criar uma coluna a mais pra poder dividir direitinho entre MANHÃ e TARDE. O problema surge quando o usuário escolhe a opção de calendário QUINZENAL ou MENSAL, pois seriam geradas muitas colunas... Bom, ao invés de adicionar n colunas, adicionei linhas a mais, sendo elas divididas entre MANHÃ e TARDE. Ex:

Porém estou tendo algumas dificuldades em relação aos eventos do Windows Form. Nessa DataGridView estou criando um Rectangle e dando um DrawString nele no RowHeader, pra cada linha, onde aparece os números dos quartos (QUARTO: 22). Essa foi a solução que achei porque o DataGridView não possui o RowSpan. 
Enfim, o problema aparece quando eu seleciono uma linha e logo em seguida eu seleciono outra. Parece que o Rectangle fica invisível... Ex: 
 
Código do evento:
reservaGrid_Grid.CellPainting += (sender, e) =>
        {
            if (e.ColumnIndex == -1 && e.RowIndex > -1)
            {
                //exibe as datas em cima das colunas, desenhando de duas em duas linhas
                for (int i = 0; i < reservaGrid_Grid.RowCount; i += 2)
                {
                    string quarto = string.Format( "Quarto: {0}", Funcoes.String.FindStringAfterCharacter(reservaGrid_Grid.Rows[i].Tag.ToString(), '_') );

                    Rectangle retangulo     = reservaGrid_Grid.GetCellDisplayRectangle(-1, i, false);
                    //int largura           = reservaGrid_Grid.GetCellDisplayRectangle(-1, i + 1, true).Width;
                    retangulo.X             += 1;
                    retangulo.Y             += 1;
                    retangulo.Width         = retangulo.Width / 2 + 15;//largura do header
                    retangulo.Height        = retangulo.Height;//tamanho do header, preenche 2 linhas
                    StringFormat format     = new StringFormat();
                    format.Alignment        = StringAlignment.Center;
                    format.LineAlignment    = StringAlignment.Center;

                    //pinta o fundo do retangulo
                    e.Graphics.FillRectangle(
                        new SolidBrush(
                            reservaGrid_Grid.ColumnHeadersDefaultCellStyle.BackColor
                        ),
                        retangulo
                    );

                    //desenha a string no retangulo
                    e.Graphics.DrawString(
                        quarto,
                        new Font(reservaGrid_Grid.ColumnHeadersDefaultCellStyle.Font.FontFamily, 13, FontStyle.Bold),
                        new SolidBrush(reservaGrid_Grid.ColumnHeadersDefaultCellStyle.ForeColor),
                        retangulo,
                        format
                    );
                }
            }
            //reservaGrid_Grid.Invalidate();
        };

Por que será? 
