Curso sobre programacion c# y Visual Studio 2019. En este blog veremos tutoriales para aprender a crear nuestras aplicaciones de consola,aplicaciones web, SQL , Tensorflow y Machine Learning
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver dos controles de uso común en muchas de las páginas web que utilizamos habitualmente. Estos controles son el ImageButton y el el elemento Image.Vamos con algunos datos sobre ellos:
El control Image nos permite mostra imagenes en el navegador y cambiar algunas de sus propiedades en tiempo de ejecucción modificando sus propiedades en el fichero.cs asociado al fichero aspx correspondiente.Por ejemplo puedes especificar mediante programación el archivo de gráficos asociado para un control Imageen tiempo de diseño o en tiempo de ejecución. También puede enlazar la propiedad ImageUrldel control a un origen de datos.
El control ImageButton nos permite una funcionalidad similar a la del control Button pero con la posibilidad de añadir una imagen.El control muestra una imagen y responde a los clics del mouse en la imagen.
- En el video os muestro algunas de las propiedades de estos dos controles y como es posible modificarlas en tiempo de diseño y en tiempo de ejeccución.
- Como acostumbro os dejo un par de enlaces a la MSDN donde tenéis algio más de información sobre estos dos controles:
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver dos controles de uso común en muchas de las páginas web que utilizamos habitualmente. Estos controles son los Hyperlink y los LinkButton.Se utilizan para poder navegar entre páginas.Los típicos enlaces que redireccionan a otras web o a otras páginas que estan alojadas en la misma web.Vamos con algunas datos de estos dos controles:
El LinkButtonse representa como un
hipervínculo en la página peorcontiene un script del lado
cliente que hace que el formulario se devuelva al servidor.
El click del LinkButtonse desncadena cuando se hace clic en el control.
La principal ventaja de utilizar un control HyperLink es que permite
establecer las propiedades de los vínculos en el código del servidor.
Por ejemplo, puede cambiar dinámicamente el texto del vínculo o la
página de destino basándose en las condiciones de la página.
- En el video os muestro como utilizar estos dos controles para crear enlaces que permitan navegar entre páginas del mismo proyecto o como ir a páginas que se encuentran fuera del proyecto.Os explico como cambiar algunas de las propiedades de estos controles tanto en la parte de diseño como en tiempo de ejecución.
- Estos dos controles tienen bastantes más propiedades que las mostradas en el video.Os dejo enlaces a la MSDN de microsofot donde podéis completar información sobre estos dos controles:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace HolaMundo
{
public partial class WebFormHolaMundo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
linkUno.Text = "Vamos al google";
linkUno.NavigateUrl = "https://www.google.es";
22- . Aplicaciones web. RadioButtonList, CheckBoxList, RadioButton y CheckBox
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver cuatro controles de uso común en muchas de las páginas web que utilizamos habitualmente. Estos controles son los RadioButtonList, CheckBoxList, RadioButton y CheckBox:
Los controles RadioButton presentan al usuario una opción que puede ser seleccionada o no.
Los controles CheckBox presentan al usuario una opción que puede ser seleccionada o no.
Los controles RadioButtonList presentan al usuario un conjunto de dos o más opciones excluyentes entre sí.Aunque
puede parecer que los botones de radio y los CheckBoxList funcionan de
forma parecida, existe una diferencia importante: cuando un usuario
selecciona un botón de radio, no puede seleccionar ninguno de los otros
botones de radio del mismo grupo sin perder la selección de este botón.
Los CheckBoxList como he comentado anteriormente permiten seleccionar varios opciones a diferencia de los RadioButtonList.
- En el vídeo os muestro unos ejemplos sobre como usar estos controles.En el caso del RadioButtonList cargo los datos en la parte de de diseño y en el CheckBoxList los cargo en tiempo de de ejecución. También muestro algunas de las múltiples propeidades y eventos que tienen estos controles:
- Como siempre suelo hacer es dejo unos enlaces a la MSDN de Microsofot donde tenéis más detalles de estos controles:
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver dos controles de uso común en muchas de las páginas web que utilizamos habitualmente.Hablo de los controles DropDownList y el control ListBox:
El control DropDownList de servidor Web permite a los usuarios seleccionar un elemento de una lista predefinida. Se diferencia del control ListBox de servidor Web en que la lista de elementos permanece oculta hasta que
los usuarios hacen clic en el botón desplegable.El control DropDownList no admite el modo de selección múltiple. En realidad, el control DropDownList es un contenedor para los elementos de lista de tipo ListItem. Cada objeto ListItem constituye un objeto independiente con sus propiedades específicas.
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver dos controles de uso común en muchas de las páginas web que utilizamos habitualmente.Me refiero a el control TextBox y el control Button.
- Pero antes de ver el vídeo donde muestro el funcionamiento básico de estos dos controles, quiero que sepamos lo que es el ciclo de vida de una página. Cuando se ejecuta una página ASP.NET, ésta recorre un ciclo de vida en
el que realiza una serie de pasos de procesamiento. Entre ellos se
incluyen la inicialización, la creación de controles, la
restauración y el mantenimiento del estado, la ejecución del código del
controlador de eventos y la presentación. Es importante conocer el ciclo de vida de la página para escribir código en la fase del ciclo de vida apropiada y conseguir que la página se comporte como nosotros queramos.
- En el video dejo unas nociones básicas para el uso de TextBox y de un botón(Button). Estos dos controles tienen muchas más propiedades. Cuando veamos ejemplos más complejos profundizaremos más en el uso de estos controles, pero estas pinceladas que os dejo el vide nos sirven para saber como se pueden usar.
- Tenéis información más detallada de estos dos controles en estos enlaces:
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a empezar a ver lo que son las aplicaciones web. Para ello crearemos nuestra primera aplicación web en Visual Studio. Este tipo de aplicaciones suelen utilizar la arquitectura cliente/servidor.
- Esta arquitectura consiste
básicamente en un cliente que realiza peticiones a otro programa (el
servidor) que le da respuesta. Aunque esta idea se puede aplicar a
programas que se ejecutan sobre una sola computadora es más ventajosa en
un sistema operativo multiusuario distribuido a través de una red de
computadoras. La interacción cliente-servidor es el soporte de la mayor
parte de la comunicación por redes.
- Una vez que sabemos la arquitectura sobre la que se basan las aplicaciones web vamos a crearnos un primer programa sencillo donde agregaremos el componente Label en el que mostraremos un texto en el navegador.
- En el video también vemos brevemente que cualquier sitio web hecho con visual studio debe tener asociado un archivo de configuración en que se pueden establecer propiedades de configuración cómunes para todo el site. Tenéis más informacion sobre los web.config en https://msdn.microsoft.com/es-es/library/ff400235(v=vs.100).aspx
- En este capítulo del curso de programación en c# con visual studio
2017, nos crearemos una nueva aplicación de consola donde veremos comocrear un keylogger casero.Este keylogger está hecho unicamente con fines didácticos.
- Este será el último capítulo donde utilizaremos las aplicaciones de consola, en los siguentes empezaremos con las aplicaciones web, por eso quería mostraros como hacer algo más potente que lo visto hasta ahora. Quizás no entenderéis todo el código pero creo que la idea sobre lo que tiene que hacer el programa si os quedará clara.
- Para los que no sepáis lo que es un un Keylogger os dejo la siguiente definición :
“Un
Keylogger es un pequeño programa diseñado para capturar todas las
pulsaciones que son realizadas por un teclado, para guardarlas en un
registro que puede verse luego en un ordenador local, o puede ser
enviado con rapidez y seguridad a través de Internet a un equipo remoto”
- En el ejemplo que muestro en el video además de capturar las pulsaciones de teclado, me he entretenido en capturar la pantalla cada treinta segundos.Además de esto he implementado un método para mandar por correo las capturas hechas.En el video explico el código:
- Para entender el código del programa es necesario que sepáis como llamar a dlls del sistema.Os dejo un ejemplo sobre como indicarle al programa que queremos utilizar un método de la dll user32.dll:
[DllImport("user32.dll")] public static extern int GetAsyncKeyState(Int32 i);
-También es necesario conocerse el código ASCII que utiliza 7 bits (2 elevado a 7 ) para representar los caracteres.Os dejo una tabla con los códigos ASCII:
- Cada número representa una letra. Esta tabla de códigos Ascii es en lo que nos basamos para traducir cada pulsación que se corresponde con un número a su letra.
- Os dejo el código de la aplicación, aunque antes me eximo de cualquier responsabilidad sobre el uso que le deis a este software:
Disclaimer: Utilizar un keylogger en equipos ajenos constituye un
delito, lo que puede acarrear penas por la ley. Utilízalo solo para
fines educativos y en computadoras propias. No me responsabilizo del mal
uso que otras personas le puedan dar.
class Program {
[DllImport("user32.dll")]
public static extern int GetAsyncKeyState(Int32 i);
[DllImport("user32.dll")]
private extern static int ShowWindow(System.IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll")]
private static extern short GetAsyncKeyState(Keys teclas);
[DllImport("user32.dll")]
private static extern short GetKeyState(Keys teclas);
[DllImport("user32.dll")]
private static extern short GetKeyState(Int32 teclas);
- En este capítulo del curso de programación en c# con visual studio
2017, nos crearemos una nueva aplicación de consola donde veremos como leer,escribir y borrar ficheros.
- Para ello utilizararemos la clase File (perteneciente al using System.IO )que proporciona
métodos estáticos para crear, copiar, eliminar, mover y abrir archivos.También utilizamos las clases StreamWriter para añadir contenido al crear el fichero y la clase StreamReader para poder leer el contenido de un fichero:
- En este capítulo del curso de programación en c# con visual studio
2017, nos crearemos una nueva clase en la aplicación de consola donde veremos los primerso conceptos sobre recursividad.
-La recursividad no es una estructura de datos,
sino que es una técnica de programación que nos permite que un bloque
de instrucciones se ejecute n veces. Remplaza en ocasiones a estructuras iterativas. En el video de hoy añadimos una nueva clase donde mostraremos un ejemplo de recursividad.
- Calcularemos de manera recursiva el factorial de un número. Por ejemplo el factorial de 5 es igual a multiplicar 5*4*3*2*1=120. En el video muestro el ejemplo.
- En programación web se suele utilizar bastante para recorrer estrucuturas de tipo arbol. El componenente denominado TreeView.
- Os dejo el código recursivo que calcula el factorial de un número. Al principio cuesta de entender pero con la practica se acaba comprendiendo:
class Factorial
{
public int calculoFactorial(int fact)
{
if (fact > 0)
{
int valor = fact * calculoFactorial(fact -1);
return valor;
}
else { return 1; }
}
}
- En este capítulo del curso de programación en c# con visual studio
2017, nos crearemos una nueva aplicación de consola donde veremos los primerso conceptos sobre herencia.
-La herencia se utiliza para reutilizar la funcionalidad de una clase existente y se puede extender al crear una
nueva clase que se deriva de ella. La clase derivada hereda las
propiedades de la clase base y es posible agregar o reemplazar métodos y
propiedades según sea necesario .Como veís en la imagen las clases Hijo3 e Hijo1 heredan de Padre por lo tanto puede utilizar metodos y propiedades de la clase Padre que esten definidas como public o protected, a su vez Nieto hereda de Hijo1 por lo tanto también hereda de Padre:
- En este capítulo del curso de programación en c# con visual studio 2017, nos crearemos una nueva aplicación de consola donde mostraremos el uso del bucle foreach. Para mostrar la utilidad de este tipo de bucle, la aplicación calculará los números primos que existen entre 0 y un valor que el usuario introduzca por pantalla (un número primo es aquel número que solo es divisible por si mismo y por la unidad).
- La instrucción foreach se usa para recorrer colecciones (arraylist,listas,arrays... ) para obtener la
información que tienen los objetos de estas listas. Es idónea para recorrer este tipo de objetos si no sabemos el número de elementos que tienen.Pero no puede usarse para agregar o quitar elementos de la colección de origen para evitar efectos secundarios imprevisibles.
- En el video también os muestro el uso de un nuevo operador. Me refiero al %. El operador % calcula el resto después de dividir el primer operando por el segundo. Por ejemplo, el resultado de dividir 7 entre 5 es 1 pero el resto es 2, el operador % nos daría el valor 2 (7%5 = 2).
- Os dejo el código de la aplicación explicada en el capítulo 14 del curso:
class Program {
//Un número primo es aquel número que solo es divisible por si mismo y por la unidad.
//Por convención se asume que el número 1 es también primo.
//Los 100000 primeros números primos los podéis Aqui
//2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89
static void Main(string[] args)
{
int numero = -1;
ArrayList almacenNumeroPrimos = new ArrayList();
String mostrarPantalla = String.Empty;
Console.WriteLine("Obtenemos todos los números primos entre 0 y....");
Console.WriteLine("Dime el número");
numero = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Los números primos que hay hasta el numero " + numero.ToString()+ " son:");
for (int i = 2; i <= numero; i++)
if (esNumeroPrimo(i))
almacenNumeroPrimos.Add(i);