Bueno lo que veo que esta pasando, segun lo que dices es que cuando ejecutas el programa se cierra no es cierto? ... bueno creo que cuando lo ejecutas ya de por si se esta generando un cambio y es por eso que sucede lo que mencionas... una forma que se me ocurre para burlar esto cuando lo ejecutas es que le pongas como un control, no se si me explico o sea cuando se produzca a partir de un segundo cambio o mas que ahi recien actives el sw_hide.
mmm bueno creo que como Lepe, con ver esa parte del codigo se podria dar una mayor explicacion..