Ciao
Hai due alternative:
1) Dalla Form contenente il DataGridView aggiungi un handler per l'evento che devi attendere si scateni per mostrare il controllo, e quindi nel gestore eventi lo mostri. Il codice diventa qualcosa di questo tipo:
class FormChiamante : Form
{
public event EventHandler EventoScatenante;
}
class FormConDataGridView : Form
{
DataGridView gridDaMostrare;
FormConDataGridView(FormChiamante formDaMonitorarePerEventi)
{
formDaMonitorarePerEventi.EventoScatenante +=
new EventHandler(formDaMonitorarePerEventi_EventoScatenante);
}
void formDaMonitorarePerEventi_EventoScatenante(object sender, EventArgs e)
{
gridDaMostrare.Visible = true;
}
}
2) Intercetti l'evento direttamente sulla Form che lo scatena, quindi da questa chiami un metodo della Form contenente il DataGridView che ti mostra il controllo:
class FormChiamante : Form
{
public event EventHandler EventoScatenante;
FormConDataGridView formConDataGridView;
void OnEventoScatenante(EventArgs e)
{
if (EventoScatenante != null)
{
EventoScatenante(this, e);
formConDataGridView.MostraDataGridView();
}
}
}
class FormConDataGridView : Form
{
DataGridView gridDaMostrare;
public void MostraDataGridView()
{
gridDaMostrare.Visible = true;
}
}
Naturalmente al posto di EventoScatenante puoi usare uno qualunque degli eventi già esistenti, come Click, Load, Validated ecc.
Se non capisci qualcosa, chiedi pure 
Luca