3ENGINE

Programación y otros cachivaches

Etiqueta: .NET

Página 3/7

Tecnologia

Cómo añadir un InputBox en C#


Aunque parezca mentira, no existe en C# un diálogo para pedir un dato. Si no tienes ganas de crear tu propio diálogo y no necesitas personalización, puedes hacer uso de la sentencia InputBox que se encuentra en el ensamblado Microsoft.VisualBasic
Esta sentencia muestra un diálogo modal con una etiqueta, una caja de texto, un botón para aceptar y otro para cancelar.

La definición de la sentencia InputBox es la siguiente:

       
public static string InputBox(
        string Prompt,
string Title,
string DefaultResponse,
int XPos,
int YPos)
  • Prompt: Mensaje del diálogo.
  • Title: Opcional. Título del diálogo.
  • DefaultResponse:  Opcional. Respuesta por defecto.
  • xPos: Opcional. Coordenada X, por defecto centrado
  • yPos: Opcional. Coordenada Y, por defecto centrado

Pasos para añadir InputBox en C#

1. Agregar la referencia al ensamblado Microsoft.VisualBasic:

Cómo añadir un InputBox en C# - 1

Cómo añadir un InputBox en C# - 2

2. Añadir la sentencia:

private void btnClickInputBox_Click(object sender, EventArgs e)
{
    string texto = Microsoft.VisualBasic.Interaction.InputBox(
        "Texto de la pregunta",
        "Titulo del diálogo",
        "Respuesta por defecto");
}

Nota: si el usuario cancela el diálogo la sentencia retorna una cadena vacía.

El resultado es:

Cómo añadir un InputBox en C# - 3




Tecnologia

Ubuntu 12.04: Cómo instalar Monodevelop


Monodevelop es un entorno de desarrollo integrado libre y gratuito, diseñado primordialmente para C# y otros lenguajes .NET así como Nemerle, Boo, Java, Python, …

Para instalar la versión preparada para Ubuntu 12.04 del repositorio oficial de monodevelop (se trata de una versión antigua, la 2.6.1, ya en estos momentos ya van por la 4) mas el web server de desarrollo xsp2 para versiones de .NET hasta la 3.5:

$ sudo apt-get install monodevelop
$ sudo apt-get install mono-xsp2

Si queremos instalar la última versión de monodevelop en ubuntu 12.04 no nos queda mas remedio que buscar un paquete PPA de Launchpad. Por ejemplo este.:

$ sudo add-apt-repository ppa:v-kukol/mono-testing
$ sudo aptitude update
$ sudo aptitude install monodevelop
$ sudo apt-get install mono-xsp2
$ sudo apt-get install mono-xsp4

Si ademas queremos instalar plugins de control de versiones, base da datos, etc, podemos:

  • Instalarlo como plugin desde el centro de software de Ubuntu en detalles de la aplicación monodevelop.
  • o bien desde el Menu herramientas/gestor de complementos de monodevelop
  • o bien obtener el plugin de control de versiones de http://linuxappfinder.com/package/monodevelop-versioncontrol

Enlaces:
https://launchpad.net/~v-kukol/+archive/mono-testing
http://www.ubuntuupdates.org/package/core/precise/universe/base/mono-xsp4
http://blog.zerosharp.com/a-c-number-developers-adventures-in-ios-integrating-git-and-monodevelop/
Manual




Tecnologia

Ejecutar una macro externa en un .csv de Excel y grabar el resultado en formato .xls de Excel


Si necesitais darle un poco de vida y colorido a un fichero en formato .csv de Excel. Quizas os sirva este ejemplo. Se trata de ejecutar una macro previamente grabada para darle un nuevo formato a la hoja Excel (colorear columnas, cambiar de tamaño las letras, crear gráficos, etc…) para despues grabar el resultado en formato .xls. Comparto este código escrito en c# por si puede ser útil.

Requisito 1: antes de ejecutar el código es importante habilitar la opción «Confiar en el acceso a proyectos de Visual Basic» en la pestaña «Editores de confianza» que se encuentra en Herramientas>Macro> Seguridad.

Requisito 2: debeis tener instaladas las PIAS para Excel.

Código:


    using Microsoft.Office.Interop.Excel;
    using Microsoft.Vbe.Interop;
    .
    .
    public static class MacroExcel
    {
        /*
         * ejecuta macro sobre un csv y devuelve path del xls resultante
         */        public static string abrirCsvEjecutarMacroyGrabarXls(string pathFicheroCsv, string pathMacro, string nombreFuncionMacro)
        {            
            object missing = System.Reflection.Missing.Value;
            string pathXls = Path.ChangeExtension(pathFicheroCsv, "xls");
            //
            // abrir csv
            //
            ApplicationClass excel = new ApplicationClass();
            Workbooks books = excel.Workbooks;
            _Workbook book = books.Open(pathFicheroCsv, missing, missing, missing, missing, missing, missing, missing, missing,
                            missing, missing, missing, missing, missing, missing);
            try
            {
                //                      
                // abrir macro
                //
                VBComponentClass vbComp = (VBComponentClass)excel.VBE.ActiveVBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);
                vbComp.CodeModule.AddFromFile(pathMacro);
                //
                // ejecutar macro
                // 
                excel.Run(nombreFuncionMacro, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,
                    missing, missing, missing);
                //
                // eliminar la macro del xls
                //
                vbComp.CodeModule.DeleteLines(1, vbComp.CodeModule.CountOfLines);
                //
                // grabar xls
                //
                File.Delete(pathXls);
                book.SaveAs(pathXls, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, missing,
                    missing, missing, missing, XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
            }
            finally
            {
                books.Close();
            }
            return pathXls;
        }
    }

Referencias:
Enlace 2
Enlace 1




Tecnologia

Split de una cadena separada por comas y acotada por dobles comillas (PHP y C#)


Si necesitais dividir una cadena en una matriz, donde los elementos de la cadena estan separados por coma (,) y opcionalmente un elemento puede estar acotado por doble comillas («). Una expresión regular y un poco de código extra puede ayudaros.

Código de prueba en c#:

     MatchCollection mc = Regex.Matches(
        ",\"hola desde\",\"una,dos,tres\",1,2,3,lineas,de codigo"+",", 
        "([^,\"]*,|\"[^\"]*\",)");
     foreach (Match m in mc)
     {
         System.Console.WriteLine(m.Value.Trim(',').Trim('"'));                               
     }

Función en PHP:

    function split_cadena_acotada($texto)
    {
        preg_match_all("([^,\"]*,|\"[^\"]*\",)", $texto.",", $matching_data);
        array_walk($matching_data[0], 'trim_value');
        return $matching_data[0];
    }
    function trim_value(&$value)
    { 
        $value = trim($value);
        $value = trim($value,',');
        $value = trim($value,'"');
    }