Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

user_unknow

Criar custom msgbox

Mensagens Recomendadas

user_unknow

Estou a desenvolver uma custom messagebox em usercontrol e ao chamar a messagebox, através de uma função, queria que o programa parasse a função e apenas retornasse o valor do botão clicado, quando o event click for chamado.

Public Class Custom_MsgBox
Public result As Custom_MsgBoxResult
Enum Custom_MsgBoxResult
	Sim
	Não
End Enum
Enum Custom_MsgBoxButton
	SimNão
	SimNãoDetalhes
End Enum

   Public Function Show(ByVal _MainGrid As Grid, ByVal _Title As String, ByVal _Buttons As Custom_MsgBoxButton)
	TextBlockMensagem.Text = _Title
	If _Buttons = Custom_MsgBoxButton.SimNão Then
		ButtonNao.Visibility = Windows.Visibility.Visible
		ButtonSim.Visibility = Windows.Visibility.Visible
	ElseIf _Buttons = Custom_MsgBoxButton.SimNãoDetalhes Then
		ButtonNao.Visibility = Windows.Visibility.Visible
		ButtonSim.Visibility = Windows.Visibility.Visible
		ButtonDetalhes.Visibility = Windows.Visibility.Visible
	End If
	_MainGrid.Children.Add(Me)
	Return result
End Function
Public Sub Button_Click(sender As Object, e As RoutedEventArgs) Handles ButtonNao.Click, ButtonSim.Click
	If sender Is ButtonNao Then
		result = Custom_MsgBoxResult.Não
	ElseIf sender Is ButtonSim Then
		result = Custom_MsgBoxResult.Sim
	End If
End Sub
End Class

Deste jeito, a function show não espera que um botão seja seleccionado.

O objectivo final, é desenvolver uma barra de mensagens semelhante ao Internet Explorer >9

Cumprimentos.

Editado por user_unknow

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Boas,

o que podes fazer dentro do show é teres um ciclo à espera que a variavel result tenha algum resultado.

Algo do tipo (não testado):

Adicionas um tipo de resultado NaoDefinido

Public result As Custom_MsgBoxResult = Custom_MsgBoxResult.NaoDefinido
Enum Custom_MsgBoxResult
	NaoDefinido
	Sim
	Não
End Enum

Depois de mostrar a janela, fica a espera do resultado, deixando a aplicação processar os eventos, para que o click no resultado funcione

Do While result=Custom_MsgBoxResult.NaoDefinido
Application.DoEvents()
System.Threading.Thread.Sleep(50)
Loop

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.