teclado virtual

17
TECLADO VIRTUAL JUÁREZ CHÁVEZ JESÚS MANUEL TOPICOS AVANZADOS DE PROGRAMACION AULA 706 11-12 INTRODUCCIÓN En esta práctica creé un teclado virtual dentro de un formulario el cual tiene la función de enviar un correo electrónico. Desarrollare una aplicación con una interfaz gráfica la cual tendrá la función de un teclado que escribirá dependiendo de la caja de texto en la que se encuentre, con el objetivo del estudiar y aplicar el paradigma dirigido a eventos mediante la lógica “ si precioso este botón entonces” y sobre todo el aprender de nuevas bibliotecas para el envió por la red de información. Todo esto se plantea mediante la adición de conocimiento de manera autóctona gracias a una guía previamente entregada donde se estimulan cuáles son los tipos de requerimientos que necesitara el programa: La aplicación debe insertar los valores correspondientes en las cajas de texto según corresponda, y al dar clic sobre el botón “Enviar”, se debe enviar el mensaje escrito al destinatario de correo. spondientes caracteres en mayúsculas; a partir de ese instante todos los caracteres introducidos deben aplicarse en mayúsculas. Una propuesta se muestra en la figura 2. 1. Escribe siempre en minúsculas 2. Escribe solo una vez en mayúsculas y regresa a minúsculas 3. Escribe siempre en mayúsculas. números y símbolos. Una propuesta de los números y símbolos se muestra en la figura 3. La manera en la que opte por abordar mi reporte sobre la práctica es mediante una pequeña guía con código implícito donde explico de manera detallada el uso de métodos y variables únicos que usare para la realización de estos anteriores objetivos, ya que no se entregó ninguna de tipo similar planteo de ser de mucha ayuda para la documentación de este tipo de proyectos los cuales podrán servir en el futuro para posibles tareas y de base para la evaluación sobre mis habilidades lógicas y conocimiento del lenguaje c#.

Upload: lili-aguirre

Post on 07-Feb-2016

218 views

Category:

Documents


0 download

DESCRIPTION

reporte de practica en c# sobre desarrollo de una aplicacion de calculadora

TRANSCRIPT

Page 1: Teclado Virtual

TECLADO VIRTUAL JUÁREZ CHÁVEZ JESÚS MANUEL

TOPICOS AVANZADOS DE PROGRAMACION

AULA 706 11-12

INTRODUCCIÓN En esta práctica creé un teclado virtual dentro de un formulario el cual tiene la función de enviar

un correo electrónico. Desarrollare una aplicación con una interfaz gráfica la cual tendrá la función

de un teclado que escribirá dependiendo de la caja de texto en la que se encuentre, con el objetivo

del estudiar y aplicar el paradigma dirigido a eventos mediante la lógica “ si precioso este botón

entonces” y sobre todo el aprender de nuevas bibliotecas para el envió por la red de información.

Todo esto se plantea mediante la adición de conocimiento de manera autóctona gracias a una

guía previamente entregada donde se estimulan cuáles son los tipos de requerimientos que

necesitara el programa:

La aplicación debe insertar los valores correspondientes en las cajas de texto según corresponda, y al dar clic sobre el botón “Enviar”, se debe enviar el mensaje escrito al destinatario de correo.

spondientes caracteres en mayúsculas; a partir de ese instante todos los caracteres introducidos deben aplicarse en mayúsculas. Una propuesta se muestra en la figura 2.

1. Escribe siempre en minúsculas

2. Escribe solo una vez en mayúsculas y regresa a minúsculas

3. Escribe siempre en mayúsculas.

números y símbolos. Una propuesta de los números y símbolos se muestra en la figura 3. La manera en la que opte por abordar mi reporte sobre la práctica es mediante una pequeña guía con código implícito donde explico de manera detallada el uso de métodos y variables únicos que usare para la realización de estos anteriores objetivos, ya que no se entregó ninguna de tipo similar planteo de ser de mucha ayuda para la documentación de este tipo de proyectos los cuales podrán servir en el futuro para posibles tareas y de base para la evaluación sobre mis habilidades lógicas y conocimiento del lenguaje c#.

Page 2: Teclado Virtual

TABLA DE DESCRIPCION DE ATRIBUTOS

Objeto Propiedad valor

textbox

e-mail Name txtemail

subject Name txtsubject

message Name Txtmessage

Multiline True

Label

label1 Text e-mail:

label2 Text Subject:

label3 Text Message:

Button

BTLETRA Name btLetra(a..z)

BTPUNTO Name btPunto

BTESPACIO Name btEspacio

BTSHIFT Name btShift

BT123 Name bt123

BTENTER

Name

btEnter

BTSEND

Name

btSend

BTBACK

Name

btBack

BTCF Name btCf

Page 3: Teclado Virtual

DESARROLLO Desarrollé una aplicación en C# que utiliza una interfaz gráfica, la cual debe insertar el valor de la

propiedad “Text” según corresponda.

Para comenzar, creamos un nuevo proyecto C# en VisualStudio la cual será una aplicación

WindowsForm. Ya con el formulario abierto comenzamos a diseñar nuestra interfaz gráfica la cal

tendrá la siguiente forma:

En el cual estableceremos las propiedades

que se muestran en la tabla anterior

según corresponda el control.

Una vez terminado el diseño comenzamos

a escribir el código el cual comenzara por

declarar las variables que necesitaremos,

comenzaremos por la bandera que nos

indicara si el teclado se muestra en

minúsculas o mayúsculas. Por lo tanto

declararemos nuestra variable “mayus”

como bool.

Seleccionamos los botones A-Z y el botón Punto a los cuales les agregaremos en su evento Click un nuevo

método, para el cual ocupamos una variable de tipo Button el cual tomara el valor del botón presionado

para asignar su propiedad .Text al control correspondiente.

Como podemos observar los botones solo escriben en el TextBox de e-mail pero los demás quedan vacíos, al

igual que si escribiéramos el mismo código para los textbox siguientes escribiría lo mismo en los tres, para

evitar esto la solución sería crear dos variables una que tomara la última posición del cursor en el textbox y la

otra tomara el valor del ultimo textbox que perdió el foco. Para ello lo escribiremos de la siguiente forma:

bool mayus = false;

private void btLetra_Click(object sender, EventArgs e) { Button objButton = (Button)sender; txtemail.Text += objButton.Text; }

private int ultimaPosicion = 0;//ultima posicion del cursor en el textbox private TextBox LastTextbox;//guarda el ultimo textbox que perdio el foco

Page 4: Teclado Virtual

Estas variables las ocuparemos en el evento Leave de los TextBox. Este evento detecta cuando el control pierde

el foco, el cual asignara los valores correspondientes a cada una de ellas.

Ahora si nuestro evento click de los botones quedaría de la siguiente forma:

A lo cual también ocuparemos la validación sobre si el ultimo digito es una mayúscula , de ser así ordenaremos

el return y de no ser así asignaremos a ultima entrada el valor de una letra.

Considerando que toda la teoria sobre el ejecricio era el poder crear la simulacion de un teclado convencional

y habiendo programado la mayoria de las teclas , ahora designe tiempo a la construccion de las teclas con

funciones especiales.

En este caso la funcion y construccion de la tecla espacio que seguira una logica similar a la de la inserccion de

letras en los textbox. Haciendo un llamado a la variable lastTextbox y los signos += para la concatenacion.

La tecla enter sera construida con una logica similar , cambiando en el sentido de la restriccion a lo cual primero

evaluaremos que se la ultima accion operada haya sido una letra y al igual que se confirmara en el textbox al

que se deseo agrega el enter.

Dentro de la funcionalidad de los metodos y asi mismo de las restricciones tendremos la funcion de asignar el

enter y estaremos regresando a ultimaentrada como ninguna

private void ultimaCaja_Leave(object sender, EventArgs e) { TextBox objtextbox = (TextBox)sender; ultimaPosicion = objtextbox.SelectionStart; LastTextbox = objtextbox; }

private void btLetra_Click(object sender, EventArgs e) { Button objButton = (Button)sender; LastTextbox.Text += objButton.Text; }

private void btLetra_Click(object sender, EventArgs e) { Button objButton = (Button)sender; LastTextbox.Text += objButton.Text; if (ultimaEntrada == Entrada.MAYUSCULA) return; else ultimaEntrada = Entrada.LETRA; }

private void btEspacio_Click(object sender, EventArgs e) { LastTextbox.Text += " "; }

Page 5: Teclado Virtual

private void btBack_Click(object sender, EventArgs e)

{

string str;

int loc;

if(LastTextbox.Text.Length > 0)

{

str = LastTextbox.Text.Substring(LastTextbox.Text.Length - 1);

loc = LastTextbox.Text.Length;

LastTextbox.Text = LastTextbox.Text.Remove(loc - 1, 1);

}

}

Mientras que para la función del botón “back” o lo que denominarnos en esta práctica como eliminación del

ultimo digito introducido, construiremos de manera logia la condición de que previamente exista una cadena

de texto introducida en el ultimo textbox que perdió el foco. De esta manera crearemos dos variables que nos

ayuden asegurarnos de lo que sea borrado será el ultimo digito de la cadena de textos, obteniendo la ultima

cadena total ingresada comenzando desde el ultimo digito ingresado.(variable denominada str) y también

obteniendo el tamaño total de esta cadena ( variable denominada loc). Logrando que la función de este método

sea eliminar desde la ultima posición de la cadena (srt) un digito por un digito.

La construcción mas compleja de este código es la función del evento shift en el teclado, ya que gracias a los

requerimientos del proyecto otorgados por el profesor los cuales son :

El botón “Shift” puede tener 3 estados:

1. Escribe siempre en minúsculas

2. Escribe solo una vez en mayúsculas y regresa a minúsculas

3. Escribe siempre en mayúsculas.

private void btEnter_Click(object sender, EventArgs e)

{

if (LastTextbox == txtemail && ultimaEntrada != Entrada.NNGUNA )

{

txtsubject.Select();

ultimaEntrada = Entrada.NNGUNA;

}

if (LastTextbox == txtsubject && ultimaEntrada != Entrada.NNGUNA)

{

txtmessage.Select();

ultimaEntrada = Entrada.NNGUNA;

}

if (LastTextbox == txtmessage && ultimaEntrada != Entrada.NNGUNA)

{

btSend.Select();

ultimaEntrada = Entrada.NNGUNA;

}

}

Page 6: Teclado Virtual

private void btshift_Click(object sender, EventArgs e)

{

if (ultimaEntrada == Entrada.LETRA )

{

btshift.BackColor=SystemColors.Control;

if (mayus == false)

{

btLetraA.Text = "A";

btLetraB.Text = "B";

btLetraC.Text = "C";

btLetraD.Text = "D";

btLetraE.Text = "E";

btLetraF.Text = "F";

btLetraG.Text = "G";

btLetraH.Text = "H";

btLetraI.Text = "I";

btLetraJ.Text = "J";

btLetraK.Text = "K";

btLetraL.Text = "L";

btLetraM.Text = "M";

btLetraN.Text = "N";

btLetraÑ.Text = "Ñ";

btLetraO.Text = "O";

btLetraP.Text = "P";

btLetraQ.Text = "Q";

btLetraR.Text = "R";

btLetraS.Text = "S";

btLetraT.Text = "T";

btLetraU.Text = "U";

btLetraV.Text = "V";

btLetraW.Text = "W";

btLetraX.Text = "X";

btLetraY.Text = "Y";

btLetraZ.Text = "Z";

mayus = true;

ultimaEntrada = Entrada.MAYUSCULA;

}

else

{

btLetraA.Text = "a";

btLetraB.Text = "b";

btLetraC.Text = "c";

btLetraD.Text = "d";

btLetraE.Text = "e";

btLetraF.Text = "f";

btLetraG.Text = "g";

btLetraH.Text = "h";

btLetraI.Text = "i";

btLetraJ.Text = "j";

btLetraK.Text = "k";

btLetraL.Text = "l";

btLetraM.Text = "m";

btLetraN.Text = "n";

btLetraÑ.Text = "ñ";

btLetraO.Text = "o";

btLetraP.Text = "p";

btLetraQ.Text = "q";

btLetraR.Text = "r";

btLetraS.Text = "s";

btLetraT.Text = "t";

btLetraU.Text = "u";

btLetraV.Text = "v";

btLetraW.Text = "w";

btLetraX.Text = "x";

btLetraY.Text = "y";

btLetraZ.Text = "z";

mayus = false;

ultimaEntrada = Entrada.LETRA;

}

}

else

{

if (ultimaEntrada == Entrada.MAYUSCULAII )

{

ultimaEntrada = Entrada.LETRA;

}

ultimaEntrada = Entrada.MAYUSCULAII ;

btshift.BackColor = SystemColors.ControlDark;

mayus = true;

}

}

El código ha quedado de esta manera:

El código en totalidad trabaja con la lógica general basados en la validación de una bandera y la confirmación

sobre que tipo fue la ultima entrada para tener dos llaves seguras de que trabaja de la manera correcta. Con

la bandera previamente declarada mayus , nos aseguramos del estado actual del teclado y cual será la función

del evento click si esta bandera esta en verdadero la función se asegurara de que el teclado se regrese a su

estado original de minúsculas , en todos los casos reasignando la bandera a su estado correspondiente y

Page 7: Teclado Virtual

private void bt123_Click(object sender, EventArgs e)

{

if (simb == false)

{

btLetraA.Text = "!";

btLetraB.Text = ";";

btLetraC.Text = Convert.ToString('"');

btLetraD.Text = "#";

btLetraE.Text = "3";

btLetraF.Text = "$";

btLetraG.Text = "/";

btLetraH.Text = "^";

btLetraI.Text = "8";

btLetraJ.Text = Convert.ToString('&');

btLetraK.Text = "*";

btLetraL.Text = "(";

btLetraM.Text = "?";

btLetraN.Text = ",";

btLetraÑ.Text = ")";

btLetraO.Text = "9";

btLetraP.Text = "0";

btLetraQ.Text = "1";

btLetraR.Text = "4";

btLetraS.Text = "@";

btLetraT.Text = "5";

btLetraU.Text = "7";

btLetraV.Text = ":";

btLetraW.Text = "2";

btLetraX.Text = "'";

btLetraY.Text = "6";

btLetraZ.Text = "-";

bt123.Text = "Abc";

simb = true;

btshift.Enabled = false;

}

else

{

btLetraA.Text = "a";

btLetraB.Text = "b";

btLetraC.Text = "c";

btLetraD.Text = "d";

btLetraE.Text = "e";

btLetraF.Text = "f";

btLetraG.Text = "g";

btLetraH.Text = "h";

btLetraI.Text = "i";

btLetraJ.Text = "j";

btLetraK.Text = "k";

btLetraL.Text = "l";

btLetraM.Text = "m";

btLetraN.Text = "n";

btLetraÑ.Text = "ñ";

btLetraO.Text = "o";

btLetraP.Text = "p";

btLetraQ.Text = "q";

btLetraR.Text = "r";

btLetraS.Text = "s";

btLetraT.Text = "t";

btLetraU.Text = "u";

btLetraV.Text = "v";

btLetraW.Text = "w";

btLetraX.Text = "x";

btLetraY.Text = "y";

btLetraZ.Text = "z";

simb = false;

btshift.Enabled = true;

}

} private void btSend_Click(object sender, EventArgs e)

{

if (txtemail.Text.Trim() == "")

{

MessageBox.Show("El campo de direccion es vacio favo de llenarle");

}

else

{

también asignando ultimaentrada el valor que ha sido efectuado ya sea una MAYUSCULA , UNA LETRA O UNA

MAYUSCULAII. Me he tomado la dedicación para poder estilizar de manera correcta el objeto botón shift y

agregarle cambios de colores por cada función activa. Comentando que el trabajar en este botón ha sido la

parte más compleja y entretenida del proyecto.

Como ultima construcción dentro del simular el teclado en el formulario se construyo el botón para poder

cambiar a números y signos todo nuestro alfabeto y poder implementarlos dentro de nuestros mensajes

quedando el código de la siguiente manera:

Cortamos el trabajo de confirmación con el uso de una única bandera para asegurarnos en que modalidad se

encuentra el teclado si en estado de letras o de símbolos , también por estética de código limpio me asegure

de que mientras el teclado este en modo de simbolo el botón shitf y la totalidad de sus funciones se encuentren

totalmente deshabilitados ya que no tiene caso que el usuario lo use y todo esto mientras la bandera de

símbolos al ser evaluada entre en modalidad de falso y la inversa si la bandera entra en verdadero el teclado

regresa a sus funciones normales con el shitf.

Por ultimo para terminar la construcción del formulario se implementaron las funciones necesarias para que

el correo sea enviado y este confirmado:

Page 8: Teclado Virtual

Se necesito de emplear una biblioteca propia de c# “using system.net.mail” para poder crear un objeto del tipo

MailMessage y poder asociarles todos nuestros campos de texto a sus complementos como se muestra en el

código anterior así mismo crear credenciales con un objeto del tipo smtpClient el cual se encargaría de obtener

las credenciales y los permisos SSL para poder enviar el mensaje anterior, como código limpio se

implementaron la confirmación y cancelación del estatus sobre el mail. Terminando satisfactoriamente la

practica.

IV. Pruebas y análisis de resultados

Page 9: Teclado Virtual

Dentro de las pruebas estuvo el error sobre el puerto indicado para el cliente smtp , al iniciar se configuro con

el puerto 25 pero el cliente de Hotmail no dejo acceder a su función y se cambió por el 587, solucionando este

pequeño error y dándonos como resultado:

Page 10: Teclado Virtual

Que el correo indicaron recibiera correctamente el correo, como análisis puedo sentirme muy satisfecho el

haber acabo esta practica de la mejor manera posible con casi cero errores demostrados y obteniendo un buen

programa para mensajeros.

V. Conclusiones Considero que gracias al tiempo de plazo para la entrega del programa pude desenvolverme de una mera más cómoda y dedicarle más tiempo al estudio de las posibles bibliotecas del lenguajes y herramientas para implementación con la red y sobre todo la construcción de un código bastante útil y estético, que sin lugar a dudas me dejo la lección del poder construir algo tan funcional de manera estudiantil.

Page 11: Teclado Virtual

VI. ANEXOS(Codigo) using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net.Mail;

namespace TecladoVirtualcs

{

public partial class Form1 : Form

{

private enum Entrada

{

NNGUNA,

LETRA,

MAYUSCULA,

MAYUSCULAII,

SIMBOLO

}

//string tecla;

private Entrada ultimaEntrada;

bool mayus = false;

bool simb = false;

//bool txt;

private int ultimaPosicion = 0;//ultima posicion del cursor en el textbox

private TextBox LastTextbox;//guarda el ultimo textbox que perdio el foco

// variables que ocuparemos para enviar los datos de textos de los textbox por mail

private string Para;

private string Sunto;

private string mesa;

private MailMessage Correo;

public Form1()

{

InitializeComponent();

ultimaEntrada = Entrada.NNGUNA;

txtemail.Select();

}

private void btLetra_Click(object sender, EventArgs e)

{

Button objButton = (Button)sender;

LastTextbox.Text += objButton.Text;

if (ultimaEntrada == Entrada.MAYUSCULA)

return;

else

ultimaEntrada = Entrada.LETRA;

}

private void btshift_Click(object sender, EventArgs e)

Page 12: Teclado Virtual

{

if (ultimaEntrada == Entrada.LETRA )

{

btshift.BackColor = SystemColors.Control;

if (mayus == false)

{

btLetraA.Text = "A";

btLetraB.Text = "B";

btLetraC.Text = "C";

btLetraD.Text = "D";

btLetraE.Text = "E";

btLetraF.Text = "F";

btLetraG.Text = "G";

btLetraH.Text = "H";

btLetraI.Text = "I";

btLetraJ.Text = "J";

btLetraK.Text = "K";

btLetraL.Text = "L";

btLetraM.Text = "M";

btLetraN.Text = "N";

btLetraÑ.Text = "Ñ";

btLetraO.Text = "O";

btLetraP.Text = "P";

btLetraQ.Text = "Q";

btLetraR.Text = "R";

btLetraS.Text = "S";

btLetraT.Text = "T";

btLetraU.Text = "U";

btLetraV.Text = "V";

btLetraW.Text = "W";

btLetraX.Text = "X";

btLetraY.Text = "Y";

btLetraZ.Text = "Z";

mayus = true;

ultimaEntrada = Entrada.MAYUSCULA;

}

else

{

btLetraA.Text = "a";

btLetraB.Text = "b";

btLetraC.Text = "c";

btLetraD.Text = "d";

btLetraE.Text = "e";

btLetraF.Text = "f";

btLetraG.Text = "g";

btLetraH.Text = "h";

btLetraI.Text = "i";

btLetraJ.Text = "j";

btLetraK.Text = "k";

btLetraL.Text = "l";

btLetraM.Text = "m";

btLetraN.Text = "n";

btLetraÑ.Text = "ñ";

btLetraO.Text = "o";

Page 13: Teclado Virtual

btLetraP.Text = "p";

btLetraQ.Text = "q";

btLetraR.Text = "r";

btLetraS.Text = "s";

btLetraT.Text = "t";

btLetraU.Text = "u";

btLetraV.Text = "v";

btLetraW.Text = "w";

btLetraX.Text = "x";

btLetraY.Text = "y";

btLetraZ.Text = "z";

mayus = false;

ultimaEntrada = Entrada.LETRA;

}

}

else

{

if (ultimaEntrada == Entrada.MAYUSCULAII )

{

ultimaEntrada = Entrada.LETRA;

}

ultimaEntrada = Entrada.MAYUSCULAII ;

btshift.BackColor = SystemColors.ControlDark;

mayus = true;

}

}

private void ultimaCaja_Leave(object sender, EventArgs e)

{

TextBox objtextbox = (TextBox)sender;

ultimaPosicion = objtextbox.SelectionStart;

LastTextbox = objtextbox;

}

private void btEspacio_Click(object sender, EventArgs e)

{

LastTextbox.Text += " ";

}

private void CambiarMinus_TextChanged(object sender, EventArgs e)

{

if (ultimaEntrada == Entrada.MAYUSCULA)

{

if (mayus == true)

ultimaEntrada = Entrada.LETRA;

btshift.PerformClick();

}

}

private void btBack_Click(object sender, EventArgs e)

{

string str;

int loc;

if(LastTextbox.Text.Length > 0)

{

str = LastTextbox.Text.Substring(LastTextbox.Text.Length - 1);

Page 14: Teclado Virtual

loc = LastTextbox.Text.Length;

LastTextbox.Text = LastTextbox.Text.Remove(loc - 1, 1);

}

}

private void bt123_Click(object sender, EventArgs e)

{

if (simb == false)

{

btLetraA.Text = "!";

btLetraB.Text = ";";

btLetraC.Text = Convert.ToString('"');

btLetraD.Text = "#";

btLetraE.Text = "3";

btLetraF.Text = "$";

btLetraG.Text = "/";

btLetraH.Text = "^";

btLetraI.Text = "8";

btLetraJ.Text = Convert.ToString('&');

btLetraK.Text = "*";

btLetraL.Text = "(";

btLetraM.Text = "?";

btLetraN.Text = ",";

btLetraÑ.Text = ")";

btLetraO.Text = "9";

btLetraP.Text = "0";

btLetraQ.Text = "1";

btLetraR.Text = "4";

btLetraS.Text = "@";

btLetraT.Text = "5";

btLetraU.Text = "7";

btLetraV.Text = ":";

btLetraW.Text = "2";

btLetraX.Text = "'";

btLetraY.Text = "6";

btLetraZ.Text = "-";

bt123.Text = "Abc";

simb = true;

btshift.Enabled = false;

}

else

{

btLetraA.Text = "a";

btLetraB.Text = "b";

btLetraC.Text = "c";

btLetraD.Text = "d";

btLetraE.Text = "e";

btLetraF.Text = "f";

btLetraG.Text = "g";

btLetraH.Text = "h";

btLetraI.Text = "i";

btLetraJ.Text = "j";

Page 15: Teclado Virtual

btLetraK.Text = "k";

btLetraL.Text = "l";

btLetraM.Text = "m";

btLetraN.Text = "n";

btLetraÑ.Text = "ñ";

btLetraO.Text = "o";

btLetraP.Text = "p";

btLetraQ.Text = "q";

btLetraR.Text = "r";

btLetraS.Text = "s";

btLetraT.Text = "t";

btLetraU.Text = "u";

btLetraV.Text = "v";

btLetraW.Text = "w";

btLetraX.Text = "x";

btLetraY.Text = "y";

btLetraZ.Text = "z";

simb = false;

btshift.Enabled = true;

}

}

private void btEnter_Click(object sender, EventArgs e)

{

if (LastTextbox == txtemail && ultimaEntrada != Entrada.NNGUNA )

{

txtsubject.Select();

ultimaEntrada = Entrada.NNGUNA;

}

if (LastTextbox == txtsubject && ultimaEntrada != Entrada.NNGUNA)

{

txtmessage.Select();

ultimaEntrada = Entrada.NNGUNA;

}

if (LastTextbox == txtmessage && ultimaEntrada != Entrada.NNGUNA)

{

btSend.Select();

ultimaEntrada = Entrada.NNGUNA;

}

}

private void btSend_Click(object sender, EventArgs e)

{

// para el evento click primero estoy confirmando que el campo de email etes lleno de no ser asi se enviara

una advertencia

if (txtemail.Text.Trim() == "")

{

MessageBox.Show("El campo de direccion es vacio favo de llenarle");

}

else

{

// estoy instanaciando las variables de tipo tecto para enviarlas con la herramiente mailmessage

Sunto = txtsubject.Text;

Page 16: Teclado Virtual

Para = txtemail.Text;

mesa = txtmessage.Text;

// se asiganaran con la herramienta mail los textos guardados previamente

Correo = new MailMessage();

Correo.To.Add(new MailAddress(Para));

// metodo to para asignar destinatario y con variables mailaddrres

Correo.From = new MailAddress("[email protected]");

Correo.Subject = Sunto;

Correo.Body = mesa;

// se le esta asignando con el objeto mail cada propiedad a los campos previos

Correo.IsBodyHtml = false;

}

SmtpClient Clientisimo = new SmtpClient(" smtp.live.com",587);

using (Clientisimo)

{

Clientisimo.Credentials = new System.Net.NetworkCredential("[email protected]", "soloyoyya");

Clientisimo.EnableSsl = true;

Clientisimo.Send(Correo);

}

MessageBox.Show("El programa funciona mensaje enviado");

}

}

}

Page 17: Teclado Virtual