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

jueves, 31 de diciembre de 2015

Cargar el contenido de un fichero txt en un componente listBox con c#

Para cargar el contenido de un fichero txt en un componente listBox con c# usaremos el siguiente código:

string path = @"C:\mydir\mylog.txt"; //definimos la ruta de nuestro fichero
string[] lines = System.IO.File.ReadAllLines(path); //readAllLines devuelve un array de strings
listBox1.Items.AddRange(lines); //Con el metodo AddRange asociamos el array de strings que devuelve "ReadAllLines" a texto visible en el listBox de nombre listBox1

viernes, 3 de octubre de 2014

Establecer estilos de celda predeterminados para el control DataGridView de formularios Windows Forms 


 Con el control DataGridView , puede especificar estilos de celda predeterminados para todo el control y para las columnas y filas específicas . Estos valores por defecto se filtran hacia abajo desde el nivel de control a nivel de columna , luego a nivel de fila , a continuación, hasta el nivel celular . Si una propiedad DataGridViewCellStyle en particular no se ha fijado en el nivel celular , se utiliza el valor de la propiedad predeterminada en el nivel de fila . Si la propiedad es también no establece a nivel de fila , se utiliza el valor predeterminado de la columna . Por último , si la propiedad es también no establece a nivel de la columna , se utiliza la configuración por defecto DataGridView . Con este ajuste , puede evitar tener que duplicar los valores de propiedad a múltiples niveles . En cada nivel , basta con especificar los estilos que difieren de los niveles por encima de ella . Para obtener más información, vea Estilos de celda en el control DataGridView de formularios Windows Forms .


To set the default cell styles programmatically

  1. Set the properties of the DataGridViewCellStyle retrieved through the DataGridView.DefaultCellStyle property.
    this.dataGridView1.DefaultCellStyle.BackColor = Color.Beige;
    this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 12);
    
    
    
  2. Create and initialize new DataGridViewCellStyle objects for use by multiple rows and columns.
    DataGridViewCellStyle highlightCellStyle = new DataGridViewCellStyle();
    highlightCellStyle.BackColor = Color.Red;
    
    DataGridViewCellStyle currencyCellStyle = new DataGridViewCellStyle();
    currencyCellStyle.Format = "C";
    currencyCellStyle.ForeColor = Color.Green;
    
    
    
  3. Set the DefaultCellStyle property of specific rows and columns.
    this.dataGridView1.Rows[3].DefaultCellStyle = highlightCellStyle;
    this.dataGridView1.Rows[8].DefaultCellStyle = highlightCellStyle;
    this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle =
        currencyCellStyle;
    this.dataGridView1.Columns["TotalPrice"].DefaultCellStyle =
        currencyCellStyle;
    
    
    

Example


private void SetDefaultCellStyles()
{
    this.dataGridView1.DefaultCellStyle.BackColor = Color.Beige;
    this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 12);

    DataGridViewCellStyle highlightCellStyle = new DataGridViewCellStyle();
    highlightCellStyle.BackColor = Color.Red;

    DataGridViewCellStyle currencyCellStyle = new DataGridViewCellStyle();
    currencyCellStyle.Format = "C";
    currencyCellStyle.ForeColor = Color.Green;

    this.dataGridView1.Rows[3].DefaultCellStyle = highlightCellStyle;
    this.dataGridView1.Rows[8].DefaultCellStyle = highlightCellStyle;
    this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle =
        currencyCellStyle;
    this.dataGridView1.Columns["TotalPrice"].DefaultCellStyle =
        currencyCellStyle;
}





Fuente: http://msdn.microsoft.com/en-us/library/vstudio/k4sab6f9(v=vs.100).aspx

jueves, 2 de octubre de 2014

¿Como ocultar el selector de registro de un grid en .NET?

Seleccionamos el grid y en la ventana de propiedades buscamos la propiedad: RowHeaderVisible cambiando su valor a true o false consigueremos mostrar u ocultar el selector de registro de un grid ("flechitas en el grid").


lunes, 29 de septiembre de 2014

System.BadImageFormatException: No se puede cargar el archivo o ensamblado

Estoy acostumbrado a trabajar con servicios de windows programados bajo Delphi. Ultimamente conforme avanzan las versiones de Sistemas operativos windows estabamos teniendo ciertos problemas derivados de privilegios principalmente. En nuestro nuevo paso a las tecnologías Microsoft estoy intentando desarrollar un servicio utilizando VS2013 y windows Forms con c#. A primera vista nos proporciona soluciones para muchos "problemas" que pudiésemos encontrar como la gestión del usuario que lo ejecuta, la implementación de un "manifest" para controlar los accesos a ciertos recursos por parte del UAC (Control de Usuarios de windows).

Una vez que tenía definido mi primer ejemplo simple siguiendo las pautas definidas en:

http://msdn.microsoft.com/es-es/library/zt39148a(v=vs.110).aspx

Me encontré a la hora de instalar mi servicio el siguiente error:

Excepción al inicializar la instalación:
System.BadImageFormatException: No se puede cargar el archivo o ensamblado 'file
:///C:\Users\jmoreno\Documents\Visual Studio 2013\Projects\WindowsService1\Windo
wsService1\bin\Debug\WindowsService1.exe' ni una de sus dependencias. Se esperab
a que el módulo tuviera un manifiesto de ensamblado..


Mi problema es que estaba usando un ejecutable de InstallUtil de una versión no comptabible con el framework de mi proyecto.

Solución: Realicé una busqueda de la cadena "installutil.exe" en mi equipo. Cogí el fichero que estaba ubicado en la carpeta v40... correspondiente al frameWork 4.0. La copie en la carpeta debug de mi servicio y listo. Espero que os sirva.

Nota: Si estadais desarollando un proyecto con la versión 2. Tendrias que tomar el de la carpeta v2...


Mas información en:

http://msdn.microsoft.com/es-es/library/system.badimageformatexception(v=vs.110).aspx

martes, 16 de septiembre de 2014

Error de la validación del estado de vista MAC. Si un clúster o una granja de servidores web alojan esta aplicación ...

El error:

"Error de la validación del estado de vista MAC. Si un clúster o una granja de servidores web alojan esta aplicación, asegurése de que la configuracion <,machineKey>.."

puede deberse a que un conjunto de aplicacion comparte un pool del servidor web. Si una aplicación se encuentra un tiempo inactiva el identificador de "sesion" de la aplicación en el pool puede ser asignada a otra aplicación produciendo el error especificado. Este caso puede darse en servidores compartidos donde un pool es compartido por cuantiosas aplicaciones.

Solución:

La solución pasa por asignarnos nuestro propio identificador que no colisione con ninguna otra apliación y evitando el molesto mensaje.

1º- Para obtener un identificador accederemos a la url: http://aspnetresources.com/tools/machineKey

y pulsaremos en Generate Key. Obtendremos un resultado por pantalla como este:

<machineKey validationKey="4E96939B01AF5BF4DF800BF841A78F509DF1173511D6A7E53B5B1F874C2839082A12ECAE9B10725BC86A2E42828A5AAFDB4664DE37F52B36B0061379CD914459" decryptionKey="27958C048667A5F1FDA322026A88387E710EDA6AEA9D09EE9927C2BDAF0C1BC1" validation="SHA1" decryption="AES" />

Ya tenemos nuestro identificador-

2º Buscaremos el archivo web.config. Una vez localizado iremos a la seccion

<system.web> ... </system.web>. Dentro de esta sección pegaremos el identificador obtenido.

Con estos pasos resolveremos este molesto problema. Suerte y hasta otra.

miércoles, 27 de agosto de 2014

IComparable vs IComprarer en c#

Collapse imageEn esta página

Collapse imageResumen

En este artículo paso a paso se describe el uso de dos interfaces: IComparer y IComparableEstas interfaces se describen en el mismo artículo por dos razones. Estas interfaces suelen utilizarse juntas, y aunque las interfaces son similares (y tienen nombres similares), usan con otros fines.

Si tiene una matriz de tipos (como cadena o entero) que ya admiten IComparer, puede ordenar dicha matriz sin proporcionar ninguna referencia explícita a IComparerEn ese caso, los elementos de la matriz se convierten a la implementación deIComparer (Comparer.Default) para usted. Sin embargo, si desea proporcionar funcionalidad de ordenación o comparación para los objetos personalizados, debe implementar una o ambas de estas interfaces.

El espacio de nombres de biblioteca de clases de.NET Framework siguiente se hace referencia en este artículo:
System.Collections

IComparable

La función de IComparable es proporcionar un método para comparar dos objetos de un tipo determinado. Esto es necesario si desea proporcionar ninguna capacidad de ordenación para el objeto. Piense en IComparable como proporcionar un orden predeterminado para los objetos. Por ejemplo, si tiene una matriz de objetos de su tipo y se llama al método deordenación de dicha matriz, IComparable proporciona la comparación de objetos durante la ordenación. Cuando se implementa la interfaz IComparable , debe implementar el método CompareTo , como sigue:

// Implement IComparable CompareTo method - provide default sort order.
int IComparable.CompareTo(object obj)
{
   car c=(car)obj;
   return String.Compare(this.make,c.make);

}
    
La comparación en el método es diferente según el tipo de datos del valor que se va a comparar. String.Compare se utiliza en este ejemplo, debido a que se ha elegido para la comparación es una cadena.


IComparable

La función de IComparer es proporcionar mecanismos adicionales de comparación. Por ejemplo, desea proporcionar la ordenación de la clase en varios campos o propiedades, ascendente y descendente en el mismo campo, o en ambos. 

Mediante IComparer es un proceso de dos pasos. En primer lugar, declare una clase que implementa la interfaz IComparery, a continuación, implemente el método de comparación :

private class sortYearAscendingHelper : IComparer
{
   int IComparer.Compare(object a, object b)
   {
      car c1=(car)a;
      car c2=(car)b;
      if (c1.year > c2.year)
         return 1;
      if (c1.year < c2.year)
         return -1;
      else
         return 0;
   }
}
    
Tenga en cuenta que el método IComparer.Compare requiere una comparación terciaria. 1, 0, -1 o se devuelve en función de si un valor es mayor que, igual a, o menos que el otro. Puede cambiar el orden (ascendente o descendente) cambiando los operadores lógicos en este método.

El segundo paso es declarar un método que devuelve una instancia del objeto IComparer :

public static IComparer sortYearAscending()
{      
   return (IComparer) new sortYearAscendingHelper();
}
    
En este ejemplo, el objeto se utiliza como segundo argumento cuando se llama al método Array.Sort sobrecargado que acepta IComparerEl uso de IComparer no se limita a arreglos de discos. Se acepta como argumento en un número de colección diferente y las clases de control.


IComparer

En el ejemplo siguiente se muestra el uso de estas interfaces. Para demostrar IComparer IComparable , se crea una clase denominada automóvil . El objeto de automóvil tiene las propiedades año . Una ordenación ascendente para la que está habilitado el campo a través de la interfaz IComparable y un orden descendente en la que el campo está habilitada mediante la interfaz IComparer . Tanto ascendente y descendente a ordena se proporcionan para la propiedad año mediante el uso deIComparer .
  1. En Visual C#, cree un nuevo proyecto de aplicación de consola. Nombre de la aplicación ConsoleEnum.
  2. Cambiar el nombre de Program.cs como Host.cs y, a continuación, reemplace el código con el código siguiente.

    Nota En Visual Studio .NET 2003, cambie el nombre Class1.cs como Host.cs.

    using System;
    
    namespace ConsoleEnum
    {
       class host
       {
          [STAThread]
          static void Main(string[] args)
          {
             // Create an arary of car objects.      
             car[] arrayOfCars= new car[6]
             {
                new car("Ford",1992),
                new car("Fiat",1988),
                new car("Buick",1932),
                new car("Ford",1932),
                new car("Dodge",1999),
                new car("Honda",1977)
             };
          
             // Write out a header for the output.
             Console.WriteLine("Array - Unsorted\n");
    
             foreach(car c in arrayOfCars)
                Console.WriteLine(c.Make + "\t\t" + c.Year);
          
             // Demo IComparable by sorting array with "default" sort order.
             Array.Sort(arrayOfCars);
             Console.WriteLine("\nArray - Sorted by Make (Ascending - IComparable)\n");
    
             foreach(car c in arrayOfCars)
                Console.WriteLine(c.Make + "\t\t" + c.Year);
    
             // Demo ascending sort of numeric value with IComparer.
             Array.Sort(arrayOfCars,car.sortYearAscending());
             Console.WriteLine("\nArray - Sorted by Year (Ascending - IComparer)\n");
    
             foreach(car c in arrayOfCars)
                Console.WriteLine(c.Make + "\t\t" + c.Year);
    
             // Demo descending sort of string value with IComparer.
             Array.Sort(arrayOfCars,car.sortMakeDescending());
             Console.WriteLine("\nArray - Sorted by Make (Descending - IComparer)\n");
    
             foreach(car c in arrayOfCars)
                Console.WriteLine(c.Make + "\t\t" + c.Year);
    
             // Demo descending sort of numeric value using IComparer.
             Array.Sort(arrayOfCars,car.sortYearDescending());
             Console.WriteLine("\nArray - Sorted by Year (Descending - IComparer)\n");
    
             foreach(car c in arrayOfCars)
                Console.WriteLine(c.Make + "\t\t" + c.Year);
         
             Console.ReadLine();
          }
       }
    }
         
  3. Agregar una clase al proyecto. Nombre de la clase automóvil .
  4. Reemplace el código de Car.cs con lo siguiente:

    using System;
    using System.Collections;
    namespace ConsoleEnum
    {   
       public class car : IComparable
       {      
          // Beginning of nested classes.
    
          // Nested class to do ascending sort on year property.
          private class sortYearAscendingHelper: IComparer
          {
             int IComparer.Compare(object a, object b)
             {
                car c1=(car)a;
                car c2=(car)b;
    
                if (c1.year > c2.year)
                   return 1;
    
                if (c1.year < c2.year)
                   return -1;
    
                else
                   return 0;
             }
          }
    
          // Nested class to do descending sort on year property.
          private class sortYearDescendingHelper: IComparer
          {
             int IComparer.Compare(object a, object b)
             {
                car c1=(car)a;
                car c2=(car)b;
    
                if (c1.year < c2.year)
                   return 1;
    
                if (c1.year > c2.year)
                   return -1;
    
                else
                   return 0;
             }
          }
    
          // Nested class to do descending sort on make property.
          private class sortMakeDescendingHelper: IComparer
          {
             int IComparer.Compare(object a, object b)
             {
                car c1=(car)a;
                car c2=(car)b;
                 return String.Compare(c2.make,c1.make);
             }
          }
    
          // End of nested classes.
    
          private int year;
          private string make;
            
          public car(string Make,int Year)
          {
             make=Make;
             year=Year;
          }
    
          public int Year
          {
             get  {return year;}
             set {year=value;}
          }
    
          public string Make
          {
             get {return make;}
             set {make=value;}
          }
    
          // Implement IComparable CompareTo to provide default sort order.
          int IComparable.CompareTo(object obj)
          {
             car c=(car)obj;
             return String.Compare(this.make,c.make);
          }
    
          // Method to return IComparer object for sort helper.
          public static IComparer sortYearAscending()
          {      
             return (IComparer) new sortYearAscendingHelper();
          }
    
          // Method to return IComparer object for sort helper.
          public static IComparer sortYearDescending()
          {      
             return (IComparer) new sortYearDescendingHelper();
          }
    
          // Method to return IComparer object for sort helper.
          public static IComparer sortMakeDescending()
          {      
            return (IComparer) new sortMakeDescendingHelper();
          }
    
       }
    }
         
  5. Ejecute el proyecto. El resultado siguiente aparece en la ventana de la consola:

    Array - Unsorted
    
    Ford            1992
    Fiat            1988
    Buick           1932
    Ford            1932
    Dodge           1999
    Honda           1977
    
    Array - Sorted by Make (Ascending - IComparable)
    
    Buick           1932
    Dodge           1999
    Fiat            1988
    Ford            1932
    Ford            1992
    Honda           1977
    
    Array - Sorted by Year (Ascending - IComparer)
    
    Ford            1932
    Buick           1932
    Honda           1977
    Fiat            1988
    Ford            1992
    Dodge           1999
    
    Array - Sorted by Make (Descending - IComparer)
    
    Honda           1977
    Ford            1932
    Ford            1992
    Fiat            1988
    Dodge           1999
    Buick           1932
    
    Array - Sorted by Year (Descending - IComparer)
    
    Dodge           1999
    Ford            1992
    Fiat            1988
    Honda           1977
    Buick           1932
    Ford            1932
         
Fuente: http://support.microsoft.com/kb/320727/es

Permitir paginacion en un GridView usando DataReader

Para poder paginar un gridView cuyo contenido lo tenemos en una consulta SQL y ejecutada sobre un DataReader debemos de utilizar un componente compatible con IEnumerable. Por tanto directamente no es posible. Debemos usar otro objeto como por ejemplo un DataTable. Veamoslo:

private void cargarDatos(){          
           ...
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            string vConsulta = "SELECT ...."
            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.HasRows)
            {
                    GridView1.DataSource = rdr;
                     GridView1.DataBind();
            }
           ...
}

Este código es perfectamente válido para mostrar los resultados en el GridView.

Pero supongamos que quisieramos paginar el contenido del GridView1. Para ello debemos definir la popiedad del gridView AllowPaging = true y definir su metodo pageIndexChanging

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gv = (GridView)sender;
            gv.PageIndex = e.NewPageIndex;
            cargarDatos();
        }

Para que funcione la paginacion deberiamos cambiar la asignacion:

 GridView1.DataSource = rdr;

por esta otra

DataTable dt = new DataTable();
dt.Load(rdr);

GridView1.DataSource = dt;

Datatable implementa IEnumerable y permite la paginacion correctamente


lunes, 16 de junio de 2014

Pasar por get una variable que contiene el caracter # almohadilla o caracteres especiales en ASP.NET C#

Realizando una aplicación en ASP.NET y C# me encontré con un problema. Tenia que pasar una variable por metodo GET y ésta contenia el caracter almohadilla #. Para solucionarlo ASP.NET C# dispone de la funcion

System.Web.HttpUtility.UrlEncode();
Asi que basta con construir nuestra cadena utilizando esta función del siguiente modo

URL = 'http://www.dominio.com?nombre_variable=' +  System.Web.HttpUtility.UrlEncode(VARIABLE_QUE_CONTIENE_CARACTERES_ESPECIALES);

Utilizando una cadena constante en lugar de Variable sería algo asi...

URL = 'http://www.dominio.com?nombre_variable=' + System.Web.HttpUtility.UrlEncode('###00012');


Suerte.

Fuente: http://stackoverflow.com/questions/3840762/how-do-you-urlencode-without-using-system-web

jueves, 12 de junio de 2014

InvalidCastException La conversion espedificada no es válida leyendo un SQLDataReader Tipo Smallint c#

Estaba lanzando una consulta sencilla y al recuperar un campo de la consulta me devolvía el error mostrado ..

si miramos el detalle de la excepcion muestra la siguiente información.. 

El problema es que tenia el campo definido en al base de datos como Smallint y al realizar la lectura del siguiente modo ...

   SqlConnection conn = null;
            conn = new SqlConnection(cloudModel.Database.Connection.ConnectionString);
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;

            string vConsulta = "select miCampoSmallint from miTabla;

            cmd.CommandText = vConsulta;
            SqlDataReader rdr = cmd.ExecuteReader();

            int miVariable = (int) rdr["miCampoSmallint"] => al realizar la conversion a int del campo smallint tenia el error del que hablamos. 

            La solucion es tan simple como realizar el casting con un short

            short miVariable = (short) rdr["miCampoSmallint"]

Me ha dolido la cabeza hasta darme cuenta de este error tan tonto así que espero sea de ayuda para otros. Saludos  

miércoles, 21 de mayo de 2014

Etiquetar el eje X de un Chat en ASP C#

Esta es la sintaxis:
Chart1.Series["Default"].Points[0].AxisLabel = "First Point";
Chart1.Series["Default"].Points[1].AxisLabel = "Second Point";


Esto es un copiado de la información proporcionada por Microsoft. Creo que es muy facil de comprender y completa por eso he realizado simplemente un volcado del contenido.

Fuente: http://msdn.microsoft.com/es-es/library/dd456628.aspx

Etiquetas

Visual Studio 2013
Personas que lo han encontrado útil: 1 de 1 Valorar este tema
En el control Chart, puede utilizar etiquetas para los ejes y etiquetas para los puntos de datos con el fin de hacer sus gráficos más informativos.

Utilizar etiquetas para los ejes

El control Chart etiqueta los ejes del área del gráfico de tres maneras diferentes, en orden de prioridad ascendente:
  • Etiquetar los ejes numéricamente
  • Etiquetar los ejes mediante texto
  • Etiquetar los ejes mediante etiquetas personalizadas
Estos métodos difieren principalmente en cómo se genera el texto de las etiquetas. Puede utilizar un método diferente para cada uno de los ejes. Por ejemplo, utilizar un conjunto de etiquetas personalizadas para el eje Y y etiquetas de texto para el eje X.

Dd456628.collapse_all(es-es,VS.120).gifEtiquetar los ejes numéricamente

Si un eje no contiene etiquetas personalizadas, y los datos trazados no tienen etiquetas de eje, el control Chart muestra automáticamente las etiquetas de eje en un intervalo especificado por la propiedad Axis.Interval. Para obtener más información sobre la propiedad, vea Eje

Dd456628.collapse_all(es-es,VS.120).gifEtiquetar los ejes mediante texto

Puede etiquetar el eje según el conjunto de datos particular utilizado mediante la propiedad DataPoint.AxisLabel. Una vez establecida esta propiedad con una cadena de etiqueta, el gráfico muestra la cadena de la etiqueta en el eje en la posición del punto de datos.
Nota Nota
Cuando el control Chart contiene un gran conjunto de datos, puede mostrar selectivamente las etiquetas de eje. Para asegurarse de que todas las etiquetas de eje están visibles, establezca la propiedad Axis.Interval en 1.
El siguiente ejemplo de código establece dos etiquetas en el eje para los dos puntos de datos.
Chart1.Series["Default"].Points[0].AxisLabel = "First Point";
Chart1.Series["Default"].Points[1].AxisLabel = "Second Point";

Dd456628.collapse_all(es-es,VS.120).gifEtiquetar los ejes mediante etiquetas personalizadas

Utilice las etiquetas personalizadas para proporcionar texto personalizado para los ejes. Las etiquetas personalizadas se implementan utilizando la propiedad de colecciónCustomLabels. Si utiliza etiquetas personalizadas, el área del gráfico no muestra etiquetas de eje en los puntos de datos.
Al utilizar objetos CustomLabel, deberá establecer las propiedades FromPosition y ToPosition de cada objeto CustomLabel, y estas propiedades deben especificar el ancho del área de texto de la etiqueta. No asigne el mismo valor a ambas propiedades, ya que representan un intervalo. Para colocar una etiqueta personalizada directamente bajo un punto de datos y su marca de graduación asociada, establezca la propiedad FromPosition en el valor del eje de ese punto de datos menos la mitad del intervalo de la marca de graduación y establezca la propiedad ToPosition en el valor del eje de ese punto de datos más la mitad del intervalo de la marca de graduación. Por ejemplo, si un eje tiene un intervalo de 1 (1, 2, 3…), y desea usar una etiqueta personalizada en X=2, entonces establezca las propiedades FromPosition y ToPosition en 1,5 y 2,5, respectivamente.
La propiedad RowIndex especifica en qué fila se mostrará la etiqueta personalizada. Si se utiliza una etiqueta personalizada en la primera fila de etiquetas, el área del gráfico no mostrará ninguna etiqueta de la escala del eje. Las únicas etiquetas permitidas en la segunda fila y siguientes serán las etiquetas personalizadas.

Dd456628.collapse_all(es-es,VS.120).gifFormatos y estilos de etiqueta de los ejes

Puede establecer los estilos de etiqueta de un eje mediante la propiedad LabelStyle del objeto Axis. Las propiedades de estilo de etiqueta que establezca en esta propiedad, comoLabelStyle.Font, se aplican a las etiquetas de un eje. Si las etiquetas del eje están demasiado cerca unas de otras, puede establecer propiedad LabelStyle.LabelsAutoFit oLabelStyle.Offset en True.
Al etiquetar los ejes numéricamente, también puede dar formato a los números utilizando la propiedad LabelStyle.Format.
El siguiente código muestra cómo establecer el eje Y principal con formato de divisa.
Chart1.ChartAreas["Default"].AxisY.LabelStyle.Format = "C";
El siguiente código muestra el día de semana en el eje X principal.Para obtener más información sobre cómo mostrar valores de fecha y hora como etiquetas de eje, vea Trabajar con valores de fecha y hora.
Chart1.ChartAreas["Default"].AxisX.LabelStyle.Format = "dddd";

Etiquetar puntos de datos

Puede mostrar etiquetas en los puntos de datos en el área de trazado. Para mostrar los valores de los puntos de datos como etiquetas, utilice la propiedad IsValueShownAsLabel en el objeto DataPoint o Series. Para mostrar otro texto como etiquetas de los puntos de datos, utilice la propiedad Series.Label.
Para utilizar datos en las etiquetas, utilice palabras clave en la propiedad Series.Label. En tiempo de ejecución, el gráfico reemplaza la palabra clave con los valores adecuados. Por ejemplo, el siguiente código muestra una etiqueta multilínea para cada punto de datos, con el valor Y en la primera línea y el valor X en la segunda línea.
Chart1.Series["Series1"].Label = "Y = #VALY\nX = #VALX";
Para obtener más información, vea Palabras clave.

Dd456628.collapse_all(es-es,VS.120).gifUtilizar etiquetas inteligentes

Dependiendo del tipo de gráfico, puede utilizar la propiedad Series.SmartLabelStyle para establecer etiquetas para puntos de datos que no entran en colisión.Esto resulta útil cuando se agrupan puntos de datos.
NotaNota
La propiedad Series.SmartLabelStyle no tiene ningún efecto sobre los tipos de gráficos de barrasbarras de intervalocircularanilloscolumnas de intervaloáreas apiladasáreas 100% apiladasbarras apiladasbarras 100% apiladas.
Para habilitar las etiquetas inteligentes, utilice el siguiente código.
Chart1.Series["Series1"].SmartLabelStyle.Enabled = true;
A continuación, puede utilizar propiedades de SmartLabelStyle tales como CalloutStyle y CalloutLineColor para controlar la apariencia de las etiquetas inteligentes.


Jesús Moreno - Ingeniero Ténico Informático - consultor Informático

Hola, soy Jesús Moreno Ingeniero Técnico Informático en sistemas por la US y propietario de éste blog. Mi trabajo en los ultimos años se ...