This is a formidable mission!:)

But a complex question always has a simple answer

private void dataGrid1_MouseDown(object sender, MouseEventArgs e)
{
    DataGrid.HitTestInfo hti= ((DataGrid) sender).HitTest(e.X, e.Y);
    
if(hti.Type==DataGrid.HitTestType.ColumnHeader)
        MessageBox.show(((DataTable)dataGrid1.DataSource).Columns[hti.Column].ColumnName);
}