Jump to content

[Resolvido] Condicionar valor em TextBox


Chamuanza
 Share

Recommended Posts

Um Bem aja de novo hoje

Pretendo condicionar a entrada de caracter em textbox criada em tempo de execução com este código, mas não sei como fazer.

Agradecia uma ajuda

//
 Dim objCxTexto() As TextBox = Nothing
    'Incluir Cx. Texto Linha 1
    Dim intIndice As Integer
    Dim intY As Integer = 10

    For intIndice = 0 To 30
	    ReDim Preserve objCxTexto(intIndice)
	    objCxTexto(intIndice) = New TextBox
	    ' Contador += 1
	    With objCxTexto(intIndice)
		    intY += 46
		    .Name = "Textbox" & intIndice.ToString
		    ' .Text = "X"
		    .AutoSize = False
		    .Size() = New System.Drawing.Size(40, 20)
		    .Location = New System.Drawing.Point(intY + 96, 231)
		    .TextAlign = HorizontalAlignment.Center
		    .BackColor = Beige
		    .Font = New System.Drawing.Font("Burning Wrath", 10, FontStyle.Bold)
		    .BorderStyle = BorderStyle.FixedSingle
	    End With

	    Me.Controls.Add(objCxTexto(intIndice))
    Next

    'Incluir Cx. Texto Linha 2
    Dim intIndice1 As Integer
    Dim intY1 As Integer = 10
    For intIndice1 = 0 To 30
	    ReDim Preserve objCxTexto(intIndice1)
	    objCxTexto(intIndice1) = New TextBox
	    With objCxTexto(intIndice1)
		    intY1 += 46
		    .Name = "Textbox" & intIndice1.ToString
		    ' .Text = "X"
		    .AutoSize = False
		    .Size() = New System.Drawing.Size(40, 20)
		    .Location = New System.Drawing.Point(intY1 + 96, 265)
		    .TextAlign = HorizontalAlignment.Center
		    .BackColor = Beige
		    .Font = New System.Drawing.Font("Burning Wrath", 10, FontStyle.Bold)
		    .BorderStyle = BorderStyle.FixedSingle
	    End With
	    Me.Controls.Add(objCxTexto(intIndice1))
    Next
Link to comment
Share on other sites

ola He

O que pretendo é condicionar a entrada de texto a "X" nas textbox, como não tenho o evento keypress ou keydown das textbox não sei como fazer.

andei a ver e penso que terei que utilizar o keydown do form, mas como?

Link to comment
Share on other sites

Estive a ver o codigo do link que enviaste mas não entendo como aplicar na minha aplicação.

PS. Sou maçarico e amador nestas andanças. Se puderes dar mais umas dicas agradecia

Link to comment
Share on other sites

Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 'podes percorrer os eventos disponíveis de um controlo no intellisense ao escreveres 'textbox1.' aqui
 If Not e.KeyChar = "X" Then 'Se o caractér premido não for o 'X'
	 e.Handled = True 'diz que o evento foi lidado, ou seja, foi cancelado e não será processado o caractér premido
 End If
End Sub

Edit: Eu não te enviei código por assim dizer, eu enviei-te a documentação oficial (msdn) desse evento, que é o que deves procurar primeiro quando tiveres alguma dúvida, quase sempre há exemplos e tudo o que precisas de saber. Não tou a dizer isto para te impedir de fazeres perguntas, só para facilitar a vida de toda a gente 😉

Edited by He B Te My
Link to comment
Share on other sites

Obrigado pela ajuda.

O problema ficou resolvido com a aplicação do código que enviaste aplicado deste modo

//
Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
    If Not e.KeyChar = "X" Then 'Se o caractér premido não for o 'X'
	    e.Handled = True 'diz que o evento foi lidado, ou seja, foi cancelado e não será processado o caractér premido
    End If

   End Sub
Link to comment
Share on other sites

Isso tás a usar o Form.Keypress evento e não o Textbox.Keypress... porque razão modificas-te o meu código? Não faz sentido lidares com o evento no form todo pelo que disseste que querias fazer, se precisares de mais que uma textbox, cada uma têm o seu evento....

Link to comment
Share on other sites

Afinal enganei-me. Ao aplicar o código no evento do form acabei por arranjar outro problema.

Não me deixa escrever outros caracteres nas textbox dos nomes das pessoas para a escala.

Vou voltar ao teu código e pelo que entendo terei de aplicar o mesmo a cada textbox

O codigo que enviaste funciona no entanto na parte Keypress a seguir ao Handles apresenta este erro "Handles clause requires a withevents variable defined in the containing type or one base types"

mas não impede de funcionar

Link to comment
Share on other sites

Claro... tens que entender as coisas, eu sei que podes ser novo nisto, mas tenta entender as coisas, por isso é que tentei comentar um bocadinho o código para entenderes o que faz.

O evento textbox.keypress refere-se apenas aquela textbox, quando a textbox tiver com focus e alguma tecla for premida a tua rotina começa a executar.

O evento form.keypress abrange o form todo e tudo o que esteja dentro do form, ou seja, qualquer 'descendente' do form, incluindo todos os controlos do form, ou seja, mesmo que tenhas evento textbox.keypress, se tiveres também o evento form.keypress dado que a textbox pertence áquele form, os 2 eventos irão disparar caso alguma tecla seja premida quando a textbox estiver com focus...

Se precisares de fazer isto para mais que um controlo, terás que lidar com cada evento em separado para cada um como disse em cima.

Link to comment
Share on other sites

Bom dia He

Ontem ja estava pedrado de sono ao responder, e meti os pes pelas mãos.

Afinal não está a funcionar. Consigo atribuir outro caractere alem do "X"

Não sei se o problema estará no erro que apresenta e que refiro abaixo (não sei decifrar tecnicamente a mensagem de erro):

Na parte Textbox1.Keypress a seguir ao Handles, o textbox1 esta sublinhado e apresenta o erro "Handles clause requires a withevents variable defined in the containing type or one base types"

Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress 'podes percorrer os eventos disponíveis de um controlo no intellisense ao escreveres 'textbox1.' aqui
    If Not e.KeyChar = "X" Then 'Se o caractér premido não for o 'X'
	    e.Handled = True 'diz que o evento foi lidado, ou seja, foi cancelado e não será processado o caractér premido
    End If
   End Sub
Link to comment
Share on other sites

... o 'textbox1' é para substituires pelo nome da textbox que pretendes controlar esse evento.

Se quiseres controlar uma textbox criada dinâmicamente como tens em cima, vais ter de fazer programáticamente, depois de adicionares ao form, escreve isto:

Addhandler objCxTexto(intIndice).Keypress, AddressOf Textbox1_Keypress

Podes renomear a Sub como quiseres, 'Textbox1_Keypress' para 'objCxTexto_Keypress' ou assim...

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
 Share

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