最后一行:
datagridview.Rows[datagridview.Rows.Count - 2] // 因为datagridview每次回空出最后一行 所以其实有值的最后一行是count - 2,具体还要看你datagridview的情况
至于取得某一列的值:
datagridview.Rows[datagridview.Rows.Count - 2] .cells["columnName"].Value.ToString();就可以得到
至于第二个问题你完全可以把你所说的自定义控件写成独立的一个类 然后点按钮过后去调用该类相应的方法不就OK了