miércoles, 11 de noviembre de 2009

Hacer que un Textbox solo acepte numeros.

Bueno pues esto es algo que me han preguntado mucho, por ahi en la web he visto inclusive controles personalizados definidos para esta tarea, pero yo en particular prefiero las cosas sencillas y eficaces, asi que aqui les dejo un codigo de apenas unas lineas implementado en el evento KeyDown del textbox, que ocurre justo antes de que el caracter pulsado sea agregado en el textbox, esto es muy util si desarrollan aplicaciones con calculos, como una calculadora por ejemplo.

Ok y aqui esta el codigo


Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown


'Omitimos las teclas suprimir, flecha izquierda, flecha derecha, backspace, y el punto decimal
If e.KeyCode <> 190 And e.KeyCode <> Keys.Back And e.KeyCode <> Keys.Delete _
And e.KeyCode <> Keys.Right And e.KeyCode <> Keys.Left Then


'Verificamos que la tecla presionada este en el rango de 0 a 9, si no cancelamos
If e.KeyCode < Keys.D0 Or e.KeyCode > Keys.D9 Then
e.SuppressKeyPress = True
End If
End If


'Si se tecleo el punto decimal ,verificamos que el textbox no contenga ya un punto decimal
'Al mismo tiempo verificamos que el textbox no este vacio
If e.KeyCode = 190 And (TextBox1.Text.Contains(".") Or TextBox1.Text = "") Then
e.SuppressKeyPress = True
End If


End Sub

Cualquier error por favor haganmelo saber.


Probado en Visual Basic 2008

martes, 10 de noviembre de 2009

Obtener la captura de la pantalla en VB .Net sin API

Bueno pues aqui les dejo una funcion para obtener la captura de la pantalla utilizando objetos declarados con el namespace System.Drawing, simplemente mandamos a llamar la funcion y nos devolvera un objeto del tipo image, el cual podemos almacenar o asignar a un PictureBox


Private Function CaptureScreen() As Image
'Declaramos un rectangulo llamado limites
Dim Limites As Rectangle
'Decalaramos un mapa de bits para almacenar nuestro resultado
Dim Captura As System.Drawing.Bitmap
'Declaramos un grafico para obtener la captura
Dim graph As Graphics
'El rectangulo tiene el tamaño de nuestra pantalla
Limites = Screen.PrimaryScreen.Bounds
'Creamos el nuevo bitmap con el tamaño del rectangulo
Captura = New System.Drawing.Bitmap(Limites.Width, Limites.Height, _
System.Drawing.Imaging.PixelFormat.Format32bppArgb)
'Guardamos el resultado en el grafico
graph = Graphics.FromImage(Captura)
'Obtenemos la imagen dentro de nuestra pantalla a nuetro grafico
graph.CopyFromScreen(Limites.X, Limites.Y, 0, 0, Limites.Size, CopyPixelOperation.SourceCopy)
'Devolvemos la imagen
Return Captura
End Function

Despues de esto tan solo habria que llamar la funcion de la siguiente forma:

PictureBox1.image = CaptureScreen() 

Con esta funcion nos evitamos utilizar las APIs y lo hacemos mediante graficos, sencillo y eficaz

Probado en Visual Basic.Net  2008