Buscar

Mostrando entradas con la etiqueta C#. Mostrar todas las entradas
Mostrando entradas con la etiqueta C#. Mostrar todas las entradas

viernes, 12 de marzo de 2010

Saber cual es la impresora por defecto c#

Este código busca la impresora por defecto en el sistema y devuelve el nombre, para que lo podamos utilizar desde Cristal Report o desde cualquier reporteador

!-- code formatted by http://manoli.net/csharpformat/ -->
public static string  GetImpresoraDefecto()
        {
         for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
            {
                PrinterSettings a = new PrinterSettings();
                a.PrinterName = PrinterSettings.InstalledPrinters[i].ToString();
                if (a.IsDefaultPrinter)
                {
                   return   PrinterSettings.InstalledPrinters[i].ToString();

                }
            }
            return "";
        }
desde Cristal Report se utiliza de la siguinte manera:

rpt.PrintOptions.PrinterName = GetImpresoraDefecto();

espacio de nombres:
using System.Drawing.Printing;

Exportar DataTable a Excel

Este código sirve para guardar un DataTable en un Excel, yo lo utilizo para agregar la función de exportar a Excel en la aplicaciones donde utilizo Grids, ya que utilizo una versión del TDBGrid que no le funciona bien el exportar a.


public static void  ExportarExcelDataTable(DataTable dt,string RutaExcel)
        {
            const string FIELDSEPARATOR = "\t"; 
            const string ROWSEPARATOR = "\n";
            StringBuilder output = new StringBuilder();     
            // Escribir encabezados    
            foreach (DataColumn dc in dt.Columns)    
            {        
                output.Append(dc.ColumnName);
                output.Append(FIELDSEPARATOR);    
            }
            output.Append(ROWSEPARATOR); 
            foreach (DataRow item in dt.Rows)    
            {        
                foreach (object value in item.ItemArray)        
                {            
                    output.Append(value.ToString().Replace('\n',' ').Replace('\r',' ').Replace('.',','));            
                    output.Append(FIELDSEPARATOR);        
                }       
                // Escribir una línea de registro        
                output.Append(ROWSEPARATOR);    
            }   
            // Valor de retorno    
           // output.ToString();
            StreamWriter sw = new StreamWriter(RutaExcel);
            sw.Write(output.ToString()); 
            sw.Close();
        }

lunes, 30 de noviembre de 2009

Eval en C#

Cuando trabajaba con vb había una función llamada Eval, que a mi parecer era muy útil; cuando empecé a trabajar con c# note que esta función no existía en este lenguaje, entonces me puse a la tarea de buscar algo parecido en c# y esto fue lo que encontré, en este link
http://weblogs.asp.net/datagridgirl/archive/2004/04/19/115900.aspx


public static string Eval(string Text)
{
//http://weblogs.asp.net/datagridgirl/archive/2004/04/19/115900.aspx Microsoft.JScript.Vsa.VsaEngine myEngine = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
return Microsoft.JScript.Eval.JScriptEvaluate(Text, myEngine).ToString(); ;
}


Lo que hace la funcion es recibir un string y lo evalua devoliendo el resultado ejemplo Eval(“56+60”) devuleve 116
Espacio de nombres

Microsoft.JScript.Vsa.VsaEngine

Espero les sea de utilidad

martes, 30 de junio de 2009

Ocultar un Tab (TabPage) en C#

Hace un tiempo me pusieron la tarea de ocultar una pestaña de un tab (un TabPage) cuando deschequiaran o mostrarlo cuando chequiaran un chekBox; entonces fue cuando me di cuenta que la propiedad Hide no sirve para nada. Y me puse a buscar como hacer esto, di con la pagina de Microsoft donde en la parte de comentarios dice “el método Hide de TabPage no ocultará la ficha. Para ocultar la ficha, debe quitar el control TabPage de la colección TabControl.TabPages”.
Asi que está es la forma como se oculta un Tab de un control Tab en C#:

if(chkimpresion.Cheked)
{
tabControl1.TabPages.Add(Impresion);//Impresión es el nombre que le dí al tab cuando lo cree. Y aquí lo muestro.
}
else
{
tabControl1.TabPages.Remove(Impresion);//Aquí se oculta.
}

Link
http://msdn.microsoft.com/es-es/library/system.windows.forms.tabpage(VS.80).aspx

Espero les sirva.

viernes, 22 de mayo de 2009

Recibir o leer correos por c# .net mediante pop3

Este resumen no está disponible. Haz clic en este enlace para ver la entrada.

martes, 12 de mayo de 2009

Imprimir en la impresora por defecto un reporte de Crystal Report en C#

Este código busca la impresora por defecto del equipo, y se la asigna a un reporte, para imprimirlo, sin necesidad de mostrar el reporte, ni de mostrar el cuadro de dialogo de impresión.

public void Imprimir()
{
string NombreImpresora = "";//Donde guardare el nombre de la impresora por defecto

//Busco la impresora por defecto
for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
{
PrinterSettings a = new PrinterSettings();
a.PrinterName = PrinterSettings.InstalledPrinters[i].ToString();
if (a.IsDefaultPrinter)
{
NombreImpresora = PrinterSettings.InstalledPrinters[i].ToString();

}
}


rptReporte rpt = new rptReporte ();// Instancio el reporte


rpt.SetDataSource(Dt);//Asigno la fuente de datos a mi reporte.
rpt.PrintOptions.PrinterName =NombreImpresora; );//Asigno la impresora
rpt.PrintToPrinter(2, false, 0, 0); );//Imprimo 2 copias
}


Si necesitamos imprimir el reporte en una impresora especifica, simplemente asignamos el nombre de la impresora al reporte

rpt.PrintOptions.PrinterName =”ElNombreImpresora”;


Nombre de espacios utilizados

using System.Drawing.Printing;

lunes, 4 de mayo de 2009

Enviar email c# (outlook), con archivo adjunto

Esta funcion envia un correo desde c#, y adjunta un archivo, lo he probado con gmail y desde un servidor de correo empresarial, espero les sirva.

librerias


using System.Net;
using System.Net.Mail;
using System.Net.Mime;



class clsMail
{


public static bool Enviar()
{
//Ruta de archivo adjunto (Si lo lleva)
string PathFile = @"Z:\archivo.rar";

//Creo el mensaje del mail.
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();

//Agrego los destinatarios, pueden ir varios
msg.To.Add("Paraquienvaelcorreo@empresa.com.co");

//Agrego la direccion del que manda el email, puede ser falsa o verdadera, pero si es falsa puede que el servidor de correo lo detecte como spam, tambien depende de las credenciales que se ponen mas abajo
msg.From = new MailAddress("jaas.jaas@gmail.com", "Jaas", System.Text.Encoding.UTF8);

//Pongo el asunto
msg.Subject = "Asunto" ;

//El tipo de codificacion del Asunto
msg.SubjectEncoding = System.Text.Encoding.UTF8;

//Escribo el mensaje Y su codificacion
msg.Body = "Mensaje del correo";
msg.BodyEncoding = System.Text.Encoding.UTF8;

//Especifico si va ha ser interpertado con HTML
msg.IsBodyHtml = false;

//Agrego el archivo que puse en la ruta anterior "PathFile", y su tipo.
Attachment Data = new Attachment(PathFile, MediaTypeNames.Application.Zip );

//Obtengo las propiedades del archivo.
ContentDisposition disposition = Data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(PathFile);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(PathFile);
disposition.ReadDate = System.IO.File.GetLastAccessTime(PathFile);
//Agrego el archivo al mensaje
msg.Attachments.Add(Data);

//Creo un objeto de tipo cliente de correo (Por donde se enviara el correo)
SmtpClient client = new SmtpClient();

//Si no voy a usar credenciales pongo false, Pero la mayoria de servidores exigen las credenciales para evitar el spam
//client.UseDefaultCredentials = false;

//Como voy a utilizar credenciales las pongo
client.Credentials = new System.Net.NetworkCredential("jaas.jaas@gmail.com", "Password");
//Si fuera gmail seria 587 el puerto, si es un servidor outlook casi siempre el puerto 25, yo utilizo un servidor propio de correo
//client.Port = 587;
client.Port = 25;

//identifico el cliente que voy a utilizar
client.Host = "Miservidor.com.co";

//Si fuera a utilizar gmail esto deberia ir en true, esto es un certificado de seguridad
//client.EnableSsl = true;
client.EnableSsl = false;


try
{
//Envio el mensaje
client.Send(msg);
return true;
}
catch (System.Net.Mail.SmtpException ex)
{
return false;
}
}

}

martes, 21 de abril de 2009

Crear una sola instancia de un formulario en c#

Crear una sola instancia de un formulario en c#

Este código me lo encontré en una página, no me acuerdo cual, y me ha sido muy útil, su función es permitir solo una instancia del formulario abierta. Entonces si ya tenemos abierto un formulario, y lo volvemos a tratar de abrir, el mostrara el primer formulario abierto, en ves de crear una nueva instancia.

Uso:
Este código se debe copiar en cada formulario, que se desee dotar de esta funcionalidad
Y se reemplaza
Formulario
por el nombre de la clase del formulario.
private static Formulario m_FormDefInstance;
/// 
/// Crea una instancia unica del Formulario
/// 
/// Instancia por defecto
public static Formulario DefInstance
{
get
{
if (m_FormDefInstance == null  || m_FormDefInstance.IsDisposed)
m_FormDefInstance = new Formulario ();
return m_FormDefInstance;
}
set
{
m_FormDefInstance = value;
}
}

Para abrir el formulario se utiliza:

Formulario.DefInstance.Show();

viernes, 17 de abril de 2009

Insertar imágenes dinámicamente en Cristal Report con C# 2005

Insertar imágenes dinámicamente en Cristal Report
Muchas veces tenemos que insertar imágenes ennuestros reportes dependiendo el registro que estemos mostrando, una forma queme a funcionado muy bien es la siguiente.
Cuando diseñemos el reporte debemos insertar un campo de tipo System.Byte[] en el DataTable utilizadopara el diseño de nuestro reporte, en este campo meteremos la imagen entiempo de ejecución.


Este campo se inserta en el reporte y será dondemostraremos la imagen.



Para mostrar el reporte utilizamos lo siguiente, para llenarel campo creado.

public void CargarReporte()
{
DataTable Dt = new
DataTable();//Creo un DataTable que sera la fuente de datos de mi reporte.
Dt=clsOrdenTerceros.Get_InfoParaOrdenImpresa(NumOrden);//Lleno el DataTable

rptOrdenSalidaTercero rpt = new rptOrdenSalidaTercero();// instancio el reporte

Dt.Columns.Add("Ruta11",System.Type.GetType("System.Byte[]"));//Agrego la columna con el tipo de dato "System.Byte[]",donde guardare mi imagen.

Dt.Rows[0]["Ruta11"] = CargarImagen("C:\foto.jpg"));//Cargo La imagen

rpt.SetDataSource(Dt);//Asigno la fuente de datos a mi reporte.
}

Y esta es la función que carga la imagen.


public static Byte[]CargarImagen(string rutaArchivo)
{


if (rutaArchivo != "")
{

try
{

FileStream Archivo = new FileStream(rutaArchivo, FileMode.Open);//Creo el archivo
BinaryReader binRead = new BinaryReader(Archivo);//Cargo el Archivo en modo binario

Byte[] imagenEnBytes = new Byte[(Int64)Archivo.Length]; //Creo un Array de Bytes donde guardare la imagen

binRead.Read(imagenEnBytes,0, (int)Archivo.Length);//Cargo la imagen en el array de Bytes
binRead.Close();

Archivo.Close();

return imagenEnBytes;//Devuelvo la imagen convertida en un array de bytes

}


catch
{
return new Byte[0];
}

}

return new byte[0];

}



Espacio de nombre Usados


using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;

lunes, 5 de enero de 2009

Eventos en Graficas (Chart) del producto DotNetCharting

Eventos en Graficas (Chart) del producto DotNetCharting

Este código permite capturar eventos como el onMouse y el clic en los chart creados
con donetcharting, para poder interactuar con las graficas creadas.


private void chart1_MouseMove(object sender, MouseEventArgs e)
{

HitTestInfo hit = this.chart1.HitTest(); // Aqui se optiene el ultimo evento ejecutado en el chart

if (hit.Object is Element) //Miro si es un elemento (Una sección de la barra en el chart)
{
Element el = (Element)hit.Object; //Creo un elemento para poder acceder a las propiedades de ese elemento y poder tomar decisiones

int pos1 = 0;

//Acceso a las propiedades del elemento seccionado para tomar dediciones
pos1 = el.ToolTip.IndexOf("Orden Produccion");
string Cod = el.ToolTip.Substring(8, pos1 - 9);

Codigo del evento……
}
}


El evento principal de este codigo es HitTestInfo hit = this.chart1.HitTest();

Que es donde se registra todos los eventos en todas las partes del chart (Solo queda
el ultimo evento); Este se puede utilizar en cualquier evento del Chart

Espacios Utilizados

using dotnetCHARTING.WinForms;

jueves, 26 de junio de 2008

Leer y modificar un XML desde C# .NET

Este código muestra una forma fácil de leer y modificar un
archivo XML desde .NET , utilizando un DataSet.

Espacio de nombres “System.Data”

Archivo XML (Config.xml)
-----------------------------------------------------------
<?xml version="1.0" standalone="yes"?>
<config>
<asesor>
<cedula>123456</cedula>
<email>jaas.jaas@gmail.com</email>
</asesor>
</config>

----------------------------------------------------------

Código:

using System.Data;

public
static void LeerYModificarXML()
{
/*********Para leer un valor*********************/

DataSet ds = new DataSet();//Se crea un dataset
ds.ReadXml("Config.xml");//Dirección del archivo xml
string Valor = ds.Tables["asesor"].Rows[0]["cedula"].ToString(); //Leemos el primer valor (Rows[0])

/*******Para Guardar un valor*******************/

ds.Tables["asesor"].Rows[0]["cedula"] = Valor; // Modificar un valor
ds.WriteXml("Config.xml"); // Guardamos las modificaciones

}

martes, 24 de junio de 2008

crear citas en el Outlook desde C#

Esta es una función para crear citas en el Outlook desde C#.
para utilizar esta funcion se debe referenciar el espacio de nombre, Tambien se debe agregar a las referencias el objeto COM "Microsoft OutLook 11.0 Object Library"

using Outlook = Microsoft.Office.Interop.Outlook;

public static void CrearCita(string Asunto, string Comentario, string Ubicacion, DateTime FechaIni, DateTime FechaFin, int Aviso)
{

Outlook.Application outlookApp = (Outlook.Application)new Outlook.Application(); //Crea un objeto de OutLook Outlook.AppointmentItem Cita; //Instanciamos Un objeto de tipo Cita(AppointmentItem)

Cita = (Outlook.AppointmentItem)outlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem); Cita.Subject = Asunto;
Cita.Body = Comentario;
Cita.Location = Ubicacion;
Cita.Start = FechaIni;
Cita.End = FechaFin;
Cita.ReminderSet = true; //Para que saque el avisito de recordar cita
Cita.ReminderMinutesBeforeStart = Aviso; //El Tiempo antes de la cita que se recordará (Minutos)
Cita.BusyStatus = Microsoft.Office.Interop.Outlook.OlBusyStatus.olBusy; //Para que en el calendario salga el estado de ocupado
Cita.Save(); //Para guardar la cita

}

Digito de verificacion DIAN (Colombia)

Hace poco un amigo mió necesitaba calcular el digito
de verificación de la DIAN
(Colombia), así que me puse la tarea de buscar el código ya que
yo en cierto momento también lo necesité y es algo muy normal en
las empresas de hoy, así que aquí esta.

public string CalcularDigitoVerificacion(string Nit)
{
string
Temp;
int
Contador;
int
Residuo;
int
Acumulador;
int[] Vector = new int
[15];

Vector[0] = 3;
Vector[1] = 7;
Vector[2] = 13;
Vector[3] = 17;
Vector[4] = 19;
Vector[5] = 23;
Vector[6] = 29;
Vector[7] = 37;
Vector[8] = 41;
Vector[9] = 43;
Vector[10] = 47;
Vector[11] = 53;
Vector[12] = 59;
Vector[13] = 67;
Vector[14] = 71;

Acumulador = 0;

Residuo = 0;

for
(Contador = 0; Contador < Nit.Length; Contador++)
{
Temp = Nit[(Nit.Length - 1) - Contador].ToString();
Acumulador = Acumulador + (
Convert.ToInt32
(Temp) * Vector[Contador]);
}

Residuo = Acumulador % 11;

if
(Residuo > 1)
return Convert.ToString
(11 - Residuo);

return
Residuo.ToString();
}