Jump to content
Sign in to follow this  
CreativeJopa

Criar custom msgbox

Recommended Posts

CreativeJopa

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.

Edited by user_unknow

Share this post


Link to post
Share on other 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

Share this post


Link to post
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
Sign in to follow this  

×
×
  • 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.