I'm not sure which event you are trying to handle such check. I suggest you do it in the data grid view CellContentClick or CellContentDoubleClick. There you get passed an args that contains the location of the cell to evaluate. The Convert.ToString() is actually the recommended way because it's safe. You can then do something like this
private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
var cell = dataGridView1[e.ColumnIndex, e.RowIndex];
string strVal = Convert.ToString(cell.Value);
if (string.IsNullOrEmpty(strVal))
MessageBox.Show("empty");
else
MessageBox.Show(strVal);
}