Jump to content

Focus em dialogbox


zephirus

Recommended Posts

Olá,

Já procurei na internet solução para o meu problema mas não encontrei nada. O que se passa é o seguinte:

- Eu tenho uma MainForm da minha aplicação e tenho uma outra form que está configurada para "FixedDialog". Assim que arranco o meu programa, mostro a minha dialogbox e até aqui tudo bem. O problema é que se mudar para outra janela qualquer (de qualquer outro programa ou até para o desktop), quando volto para a MainForm, a dialogbox não está visível. Tenho de fazer taskswitch para a ver.

- Além deste problema, a dialogbox está configurada para não aparecer na taskbar, no entanto aparece quando se faz taskswitch. O que eu pretendia também era que só aparecesse na taskbar a MainForm e também no taskswitch independentemente do facto de eu ter uma dialogbox aberta ou não.

O meu código para o load da MainForm é este:

Me.Show()
Select Case asAlreadyLoggedIn
  Case False
    Login.ShowDialog()
    asAlreadyLoggedIn = True
  Case True
End Select
Link to comment
Share on other sites

Tenta

Me.BringToFront

no arranque do dialog.

Quando eu faço o ShowDialog, a form já aparece à frente da MainForm. O problema é que depois de aparecer, se eu for ao desktop por exemplo e depois clicar na taskbar de novo, aparece-me a MainForm sem a DialogBox. Quando eu inicio o meu programa, na taskbar aparece-me o nome da MainForm e não da janela de diálogo, tem alguma coisa a ver com isto?

EDIT: isso do topmost funciona, é certo mas não é o que pretendo pois assim tenho sempre a janela à frente de qualquer outra de outro programa.

Link to comment
Share on other sites

Nesse caso, terás de controlar a instância do dialog e dizeres o que ela há-de fazer a partir do evento GotFocus (ou coisa parecida) da form principal.

Ou, tenta dar a main form como ParentForm da dialog. Talvez assim ela apareça depois de focares a main. Eu não posso exprimentar agora 😉

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Nesse caso, terás de controlar a instância do dialog e dizeres o que ela há-de fazer a partir do evento GotFocus (ou coisa parecida) da form principal.

Ou, tenta dar a main form como ParentForm da dialog. Talvez assim ela apareça depois de focares a main. Eu não posso exprimentar agora 😉

Vou tentar isso, obrigado. Já agora, e pode ser que ajude, eu tenho outras dialogbox no meu programa e todas elas funcionam como eu prentedo menos esta primeira que é chamada no Load da aplicação. Penso que tem a ver com isso.

Link to comment
Share on other sites

Bem, depois de mais umas cabeçadas  :wallbash:, lá consegui resolver o problema. Então é assim:

- Primeiro criei uma variável:

Public asAlreadyLoggedIn As Boolean = False

- No Load da MainForm tenho isto:

Me.Show()

- Depois tenho um pequeno código no activate da MainForm onde mostro a form dialogbox se a variável asAlreadyLoggedIn for falsa e depois mudo-a para True:

	Sub MainFormActivate(sender As Object, e As EventArgs) Handles MyBase.Activated
	Select Case asAlreadyLoggedIn
		Case True
		Case False
			asAlreadyLoggedIn = True
			Login.ShowDialog()
	End Select
End Sub
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.