first of all how do you maintain the relationship between a node and the datagridview row? is there like a bound object or ??
to take advantage of your code, what I would do is: when populating my treeview I would keep track of the corresponding index using the "Tag" property of the treenode like
TreeNode node=tvwACH.Nodes.Add("node text");
node.Tag=row_index;
then by modifying your current code it would be.
if (tvwACH.SelectedNode.tag != Null)
{
Int16 tag = Convert.ToInt16(tvwACH.SelectedNode.tag);
this.dataGridView1.Rows[tag].Selected = true;
}
hope this helps.if you could post how you populate the treeview and the gridview, it might be easier to clarify this.