Archivos por Etiqueta: C#

Samples and Starter Kits C#

10 sep

Amazon-Enabled Movie Collection

Amazon-Enabled Movie Collection

Elegant design

Connect to Amazon

Connect to Amazon

Black Jack Card Game

Start with $3,000 and play against a Vegas-rules dealer in one of the most popular and easy-to-learn card games around.

Play

Skype Wrapper for .NET

Send and receive phone calls

Send and receive phone calls

Descargar Samples and Starter Kits

Pueden ver los demas recursos en MSDN

La evolución de delegados en C#

28 ago

En C# 1.0, se creaba una instancia de un delegado inicializándolo explícitamente con un método que se definía en otra parte del código. En C# 2.0, se introdujo el concepto de métodos anónimos como un medio de escribir bloques de instrucciones insertados sin nombre que se pueden ejecutar en una invocación de delegado. C# 3.0 introduce las expresiones lambda, que son similares en concepto a los métodos anónimos, pero más expresivas y concisas. Estas dos características se conocen colectivamente como funciones anónimas. En general, las aplicaciones destinadas a la versión 3.5 y posteriores de .NET Framework deberían utilizar expresiones lambda.

El ejemplo siguiente muestra cómo ha evolucionado la creación de delegados desde C# 1.0 a C# 3.0:
class Test
{
delegate void TestDelegate(string s);
static void M(string s)
{
Console.WriteLine(s);
}

static void Main(string[] args)
{
// Original delegate syntax required
// initialization with a named method.
TestDelegate testdelA = new TestDelegate(M);

// C# 2.0: A delegate can be initialized with
// inline code, called an “anonymous method.” This
// method takes a string as an input parameter.
TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); };

// C# 3.0. A delegate can be initialized with
// a lambda expression. The lambda also takes a string
// as an input parameter (x). The type of x is inferred by the compiler.
TestDelegate testDelC = (x) => { Console.WriteLine(x); };

// Invoke the delegates.
testdelA(“Hello. My name is M and I write lines.”);
testDelB(“That’s nothing. I’m anonymous and “);
testDelC(“I’m a famous author.”);

// Keep console window open in debug mode.
Console.WriteLine(“Press any key to exit.”);
Console.ReadKey();
}
}
/* Output:
Hello. My name is M and I write lines.
That’s nothing. I’m anonymous and
I’m a famous author.
Press any key to exit.
*/

Bueno este es un Copy & Paste del MSDN, me parecio y para no olvidar lo dejo aqui.

Autocompletar TextBox y ComboBox

23 jul

Hace algunos días venia buscando información sobre el autocompletado y encontré algunas cosas que me ayudaron y bueno ya le puse autocompletado a mi programa y quedo bien, así que tratare de explicar lo que hice y pondré un ejemplo. Para empezar encontré esta página de Msdn.

Utilice las propiedades AutoCompleteCustomSource, AutoCompleteMode y AutoCompleteSource para crear un ComboBox que complete automáticamente cadenas de entrada comparando el prefijo que se escribe con los prefijos de todas las cadenas de un origen mantenido. Esto es útil para controles ComboBox en los que se escribirán frecuentemente direcciones URL, direcciones, nombres de archivo o comandos. Si hay entradas duplicadas en el origen mantenido, la finalización automática se comporta de forma imprevisible.

Si establece ComboBoxStyle en DropDownList, la lista sólo muestra si AutoCompleteMode es Suggest o SuggestAppend.

El uso de la propiedad AutoCompleteCustomSource es opcional, pero debe establecerse la propiedad AutoCompleteSource en CustomSource para poder utilizar AutoCompleteCustomSource.

Debe utilizar las propiedades AutoCompleteMode y AutoCompleteSource juntas.

Con AutoCompleteMode establecida en SuggestAppend y AutoCompleteSource establecida en ListItems, el comportamiento es el siguiente:

  • Si la lista de cadenas está vacía, al presionar la tecla RETROCESO o SUPR no sucede nada.
  • Si se presiona la tecla RETROCESO menos de un segundo, se selecciona el elemento anterior o no se selecciona nada si la lista de cadenas está vacía.
  • Si se presiona la tecla RETROCESO más de un segundo, se selecciona el primer elemento.
  • Si se presiona la tecla SUPR, se selecciona el primer elemento.

Mas informacion tambien pueden encontrar en CSharp Corner.

Despues de documentarnos un poco vamos a poner manos a la obra.  Lo que vamos a hacer es cargar un ComboBox con la datos de la tabla Clientes haciendo uso de la base de datos Northwind y luego vamos a hacer que el TextBox se autocomplete con esos datos.

Formulario de Autocomplete

Formulario de Autocomplete

Primero vamos a Cargar el ComboBox haciendo uso de la Clase y metodo que hicimos en el post anterior Programacion en Capas, en donde definimos el metodo ListarClientes.

//Creamos una instancia de la Clase mCustomers

//que es la clase donde pondremos los metodos

mCustomers ObjCust = new mCustomers();

//Creamos una lista del tipo cCustomers

List<cCustomers> LstCust = new List<cCustomers>();

private void Form1_Load(object sender, EventArgs e)

{

LstCust = ObjCust.ListarClientes(“select CustomerID, CompanyName from customers”);

CboAuto.DataSource = LstCust;

CboAuto.ValueMember = “CustomerID”;

CboAuto.DisplayMember = “CompanyName”;

AutoCompletarTxt(AutoCompleteMode.None);

}

Ahora vamos a ver le procediminto para autocompletar el TextBox

private void AutoCompletarTxt(AutoCompleteMode AuMode)

{

//Indicamos que vamos a usar una fuente personalizada

TxtAuto.AutoCompleteSource = AutoCompleteSource.CustomSource;

//El modo de Autocompletado lo vamos a pasar por un parametro

//para poder escoger con los CheckBoxes

TxtAuto.AutoCompleteMode = AuMode;

//Creamos la Clase que corresponde al tipo AutoCompleteCustomSource

AutoCompleteStringCollection aColl = new AutoCompleteStringCollection();

//Hacemos una consultaa la Lista

var auto = from obj in LstCust

select obj.CompanyName;

//Recorremos la lista

foreach (string cad in auto)

{

aColl.Add(cad);

}

//Le asignamos la fuente al TextBox y eso es todo

TxtAuto.AutoCompleteCustomSource = aColl;

}

Como veran hice una consulta para recuperar el campo CompanyName, pero seguramente habra muchas maneras de hacer esto, espero sugerencia.

foreach (string cad in auto)

{

TxtAuto.AutoCompleteCustomSource.Add(cad);

}

Tambien pudimos poner asi, y ya no crear el AutoCompleteStringCollection.
Espero consejos y criticas.
Les dejo adjunto la fuente AppAutocomplete.rar

Programación en Capas

23 jul

Entiendo por clase a la agrupación de objetos con características similares, entonces puedo expresar a la clase Clientes de esta manera:

//Aca tenemos una Clase

public class cCustomers

{

private string _xCustomerID;

private string _xCompanyName;

//Este es un Constructor

public cCustomers()

{

}

//Este es otro Constructor

public cCustomers(string vCustId, string vCiaName)

{

CustomerID = vCustId;

CompanyName = vCiaName;

}

//Este es una propiedad o atributo

public string CustomerID

{

get { return _xCustomerID; }

set { _xCustomerID = value; }

}

//Este es otra propiedad o atributo

public string CompanyName

{

get { return _xCompanyName; }

set { _xCompanyName = value; }

}

}

Una Clase tiene Métodos, en este caso he creado una Clase llamada mCustomers en donde podremos poner todos los métodos que se utilizaran en la Clase Clientes, por lo pronto he creado el método ListarClientes al que pasamos un parámetro de tipo string y retorna una lista List<cCustomers>.

public List<cCustomers> ListarClientes(string vQuery)

{

string Con = “data source=.\\SqlExpress;Initial Catalog =NorthWind; integrated security=true”;

SqlConnection Cn = new SqlConnection(Con);

SqlDataReader Dr = null;

SqlCommand Cmd = new SqlCommand(vQuery, Cn);

Cn.Open(); //Abrimos la conexion

Dr = Cmd.ExecuteReader(); //Lenamos el DataReader

//Creamos la Lista del mismo tipo de nuestra clase clientes

List<cCustomers> lista = new List<cCustomers>();

int colCustomerID = Dr.GetOrdinal(“CustomerID”);

int colCompanyName = Dr.GetOrdinal(“CompanyName”);

int colCount = Dr.FieldCount;

object[] values = new object[colCount];

while (Dr.Read())

{

Dr.GetValues(values);

cCustomers cust = new cCustomers(Convert.ToString(values[colCustomerID]),

Convert.ToString(values[colCompanyName]));

lista.Add(cust); //Añadimos a las lista un cliente, según corra el bucle

}

return lista; //Devolvemos la Lista llena

}

Seguir

Get every new post delivered to your Inbox.