I'm just guessing, I don't really know it: maybe you need to make sure that your sub Text_KeyPress returns 1. If it returns 0, the default action (which is typing into the field) would not get carried out. Btw, if it returns -1, the Dialog() call would return and the script would continue after that point. That goes for all event subs.
> -----Original Message----- ... > sub Text_KeyPress { > > my($key) = @_; > > if ($key == 1) { > $button->SetFocus(); > } elsif ($key == 3) { > $button->SetFocus(); > } return 1; > }