pues no se me habia ocurrido... pero lo que tuve que hacer para resolverlo, fue lo siguiente
1. declaro una variable local en cada forma donde use las transacciones
2. al momento de crear la forma guardo el estado de la transaccion en dicha variable (variable = cnn.InTransaction)
3. les pongo la condicion a cada una de las veces que vaya a terminar, iniciar o regresar una transaccion (if not variable then mov con la transaccion)
4. asi, solo el que inicio la transaccion puede terminarla...
Pero, gracias por tu respuesta.. espero y esto le pueda servir a alguien mas