Problema al configurar DataSource de un DataGridView

Lo que sucede aquí es que cuando se abre el formulario, muestra contextMenu y muestra DataGridView en él con el valor de dataSet1. Pero cuando hago clic en el botón para cambiar la fuente de datos de la cuadrícula, no muestra los registros de dataSet2.

private void Form1_Load(object sender, EventArgs e)
{
    SetDataSource(dataSet1);// A populated DataSet
}

protected void SetDataSource(DataSet ds)
{
    dataGridView1.DataSource = ds;
    ToolStripControlHost tsHost = new ToolStripControlHost(dataGridView1);
    contextMenuStrip1.Items.Clear();
    contextMenuStrip1.Items.Add(tsHost);
    contextMenuStrip1.Show(textBox1, 0, 27);
}

private void button1_Click(object sender, EventArgs e)
{
    SetDataSource(dataSet2);// Another populated DataSet
}

Intenté agregar otro control DataGridView (dataGridView2) en mi formulario, pero esta vez no lo puse en ToolStripControlHost y no lo agregué al contextMenuStrip1.

dataGridView1.DataSource = ds;
dataGridView2.DataSource = ds; // <-- Parent of this is the Form1, the control is not added in the contextMenuStrip.
ToolStripControlHost tsHost = new ToolStripControlHost(dataGridView1);
contextMenuStrip1.Items.Clear();
contextMenuStrip1.Items.Add(tsHost);
contextMenuStrip1.Show(textBox1, 0, 27);

Cuando se carga el Form1, las ventanas emergentes contextMenuStrip1 y dataGridView1 se agregan como un elemento, lo que hace que dataGridView1 desaparezca en el formulario y dataGridView2 solo permanece en Form1.

Cuando golpeo elbutton1 eldataGridView2 cambia su base de contenido de su nuevoDataSource (dataSet2), mientras que dataGridView1 todavía muestra el valor dedataSet1. Lo que noté es cuando llegó el momentodataGridView1 se está agregando a laToolStripHosty convertirlo en un elemento en elcontextMenuStrip1, elDataSource propiedad de laDataGridView el control ya no se cambia. A diferencia deldataGridView2 eso permanece en la forma que no agregué alcontextMenuStrip1.

Respuestas a la pregunta(2)

Su respuesta a la pregunta