Your post is quite confusing: while you have already known that you need to use OpenMode.ForWrite to modify opened entity, yet you still use OpenMode.ForRead before modify the MText entity. Have you tried OpenMode.ForWrite? Or is there some reasons that make you think you cannot use OpenMode.ForWrite?
By the way, in your case, testing if the opened entity is null is not necessary, because
1. The PromptStatus.OK means a valid entity is selected;
2. the the direct casting ...=(MText)tr.GetObject(... only returns MText, if the casting succeed, or exception. if the casting fails (in your case, it will not fail because the selecting is set to only allow MText being selected!); it never returns NULL.