So, instead of defining HTML controls in your pages directly, you define an ASP.NET Server
Control with the following syntax, where the italicized parts differ for each control.
<asp:TypeOfControl ID=”ControlName“ Runat=”Server” />
For the controls that ship with ASP.NET 4 you always use the asp: prefix followed by the name of
the control. For example, to create a TextBox that can hold the same welcome message and current
time, you can use the following syntax:
<asp:TextBox ID=”Message” Runat=”Server” />
Note that the control has two attributes: ID and Runat. The ID attribute is used to uniquely identify
a control on the page, so you can program against it. It’s important that each control on the page
has a unique ID; otherwise the ASP.NET runtime won’t understand what control you’re referring to.
If you accidentally type a duplicate control ID, VWD will signal the problem in the error list. The
mandatory Runat attribute is used to indicate that this is a control that lives on the server. Without
this attribute, the controls won’t be processed and will end up directly in the HTML source. If you
ever feel you’re missing a control in the final output in the HTML of the browser, ensure that the
control has this required attribute. Note that for non-server elements, like plain HTML elements,
the Runat attribute is optional. With this attribute on non-server controls, they can be reached by
your programming code. You learn more about this later in the book.
You can easily add the Runat attribute to an existing element by typing runat and pressing the
Tab key.
The preceding example of the TextBox is using a self-closing tag where the closing slash (/) is embedded
in the opening tag. This is quite common for controls that don’t need to contain child content
such as text or other controls. However, the long version, using a separate closing tag is acceptable as
well:
<asp:TextBox ID=”Message” Runat=”Server”></asp:TextBox>
You can control the default behavior of closing tags per tag using Tools ➪ Options ➪ Text Editor ➪
HTML ➪ Formatting ➪ Tag Specific Options.
You can program against this text box from code that is either placed inline with the page or in a
separate Code Behind file, as you saw in Chapter 2. To set the welcome message and the time, you
can use the following code:
VB.NET
Message.Text = “Hello World, the time is “ & DateTime.Now.TimeOfDay.ToString()
C#
Message.Text = “Hello World, the time is “ + DateTime.Now.TimeOfDay.ToString();
The definition of the control in the markup section of the page is now separated from the actual
code that defines the text displayed in the text box, making it easier to define and program the text
box (or any other control) because it enables you to focus on one task at a time: either declaring the
control and its visual appearance in the markup section of the page, or programming its behavior
from a code block.
PROYECTO PORTAL WEB FCFYM UNT
lunes, 16 de abril de 2012
domingo, 15 de abril de 2012
Cookies en ASP.NET
Las cookies son una parte muy importante en todas las aplicaciones Web.
Si bien nunca se recomienda basar una aplicación en el funcionamiento de las cookies (ya que el usuario siempre puede borrarlas y/o modificarlas), éstas nos ofrecen la posibilidad a los webmasters de dar muchos y buenos servicios a nuestros usuarios.
Y como siempre, si unimos la palabra webmaster con la de ASP.NET, nos da como resultado la facilidad. Y es que si trabajar con cookies ha sido siempre sencillo en antiguos lenguajes como ASP o PHP, con ASP.NET lo es mucho más, pero además se le une la orientación a objetos y el tipado de las cookies.
En ASP.NET las cookies se manejan con HttpCookie, que está dentro del namespace System.Web.
Pero vayamos al grano con los usos típicos que se les hace a las cookies:
1.- Crear una cookie
// Creamos elemento HttpCookie con su nombre y su valor
HttpCookie addCookie = new HttpCookie("subgurim", DateTime.Now.ToString());
// Si queremos le asignamos un fecha de expiración: mañana
addCookie.Expires = DateTime.Today.AddDays(1).AddSeconds(-1);
// Y finalmente ñadimos la cookie a nuestro usuario
Response.Cookies.Add(addCookie);
2.- Recoger una cookie
// Recogemos la cookie que nos interese
HttpCookie cogeCookie = Request.Cookies.Get("subgurim");
// O a la antigua usanza, que es lo mismo pero me gusta menos
// HttpCookie cogeCookie = Request.Cookies["subgurim"];
// O mostramos todas las cookies por pantalla
foreach (HttpCookie cookie in Request.Cookies)
{
Response.Write(cookie.Name + ":" + cookie.Value + "<br />");
}
3.- Modificar una cookie
// Puede darse el caso que lo que queramos es modificar una cookie
// Por ejemplo vamos a cambiar el tiempo de expiración de la cookie que creamos al principio
HttpCookie modificaCookie = Request.Cookies.Get("subgurim");
modificaCookie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Set(modificaCookie);
4.- Borrar una cookie
// Borrarla es realmente sencillo
Response.Cookies.Remove("subgurim");
// O si quieres borrarlas todas...
Response.Cookies.Clear();
5.- Cookies multidimensionalesSí, ya lo sé, una sóla cookie puede contener varios valores... pero ASP.NET nos lo sigue poniendo muy sencillo. Veamos cómo creamos una cookie multidimensional y cómo la recogemos. Por extensión sabemos ya modificar esa cookie así como borrarla.
5.1 - Crear cookie multidimensional
HttpCookie addMultiCookie = new HttpCookie("subgurimMultidimensional");
for (int i = 0; i < 10; i++)
{
// Mi modo preferido
addMultiCookie.Values.Add(i.ToString(), "Elemento " + i.ToString());
// Modo antiguo y que no me gusta
//addMultiCookie[i.ToString()] = "Elemento " + i.ToString();
}
Response.Cookies.Add(addMultiCookie);
Como observamos, la única diferencia es que accedemos a la colección Values (System.Collections.Specialized.NameValueCollection), y en ella podemos ejecutar lo mismo que en cualquier otro tipo de colección.
5.2 Recoger cookie multidimensional
HttpCookie cogeMultiCookie = Request.Cookies.Get("subgurimMultidimensional");
// Accedemos a cualquiera de los valores.
// Por ejemplo, en este caso recogemos el valor de la cookie cuyo nombre es "5"
string valorCualquiera = cogeMultiCookie.Values.Get("5");
Nota: Fijaos en que siempre que recogemos una cookie, utilizamos Request, y cuando la modificamos o borramos, utilizamos Response.
Nota 2: El objeto HttpCookie sólo contiene a la cookie, si queremos darle valor a los cambios que le hagamos, siempre debemos utilizar el Response y el Request.
Si bien nunca se recomienda basar una aplicación en el funcionamiento de las cookies (ya que el usuario siempre puede borrarlas y/o modificarlas), éstas nos ofrecen la posibilidad a los webmasters de dar muchos y buenos servicios a nuestros usuarios.
Y como siempre, si unimos la palabra webmaster con la de ASP.NET, nos da como resultado la facilidad. Y es que si trabajar con cookies ha sido siempre sencillo en antiguos lenguajes como ASP o PHP, con ASP.NET lo es mucho más, pero además se le une la orientación a objetos y el tipado de las cookies.
En ASP.NET las cookies se manejan con HttpCookie, que está dentro del namespace System.Web.
Pero vayamos al grano con los usos típicos que se les hace a las cookies:
1.- Crear una cookie
// Creamos elemento HttpCookie con su nombre y su valor
HttpCookie addCookie = new HttpCookie("subgurim", DateTime.Now.ToString());
// Si queremos le asignamos un fecha de expiración: mañana
addCookie.Expires = DateTime.Today.AddDays(1).AddSeconds(-1);
// Y finalmente ñadimos la cookie a nuestro usuario
Response.Cookies.Add(addCookie);
2.- Recoger una cookie
// Recogemos la cookie que nos interese
HttpCookie cogeCookie = Request.Cookies.Get("subgurim");
// O a la antigua usanza, que es lo mismo pero me gusta menos
// HttpCookie cogeCookie = Request.Cookies["subgurim"];
// O mostramos todas las cookies por pantalla
foreach (HttpCookie cookie in Request.Cookies)
{
Response.Write(cookie.Name + ":" + cookie.Value + "<br />");
}
3.- Modificar una cookie
// Puede darse el caso que lo que queramos es modificar una cookie
// Por ejemplo vamos a cambiar el tiempo de expiración de la cookie que creamos al principio
HttpCookie modificaCookie = Request.Cookies.Get("subgurim");
modificaCookie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Set(modificaCookie);
4.- Borrar una cookie
// Borrarla es realmente sencillo
Response.Cookies.Remove("subgurim");
// O si quieres borrarlas todas...
Response.Cookies.Clear();
5.- Cookies multidimensionalesSí, ya lo sé, una sóla cookie puede contener varios valores... pero ASP.NET nos lo sigue poniendo muy sencillo. Veamos cómo creamos una cookie multidimensional y cómo la recogemos. Por extensión sabemos ya modificar esa cookie así como borrarla.
5.1 - Crear cookie multidimensional
HttpCookie addMultiCookie = new HttpCookie("subgurimMultidimensional");
for (int i = 0; i < 10; i++)
{
// Mi modo preferido
addMultiCookie.Values.Add(i.ToString(), "Elemento " + i.ToString());
// Modo antiguo y que no me gusta
//addMultiCookie[i.ToString()] = "Elemento " + i.ToString();
}
Response.Cookies.Add(addMultiCookie);
Como observamos, la única diferencia es que accedemos a la colección Values (System.Collections.Specialized.NameValueCollection), y en ella podemos ejecutar lo mismo que en cualquier otro tipo de colección.
5.2 Recoger cookie multidimensional
HttpCookie cogeMultiCookie = Request.Cookies.Get("subgurimMultidimensional");
// Accedemos a cualquiera de los valores.
// Por ejemplo, en este caso recogemos el valor de la cookie cuyo nombre es "5"
string valorCualquiera = cogeMultiCookie.Values.Get("5");
Nota: Fijaos en que siempre que recogemos una cookie, utilizamos Request, y cuando la modificamos o borramos, utilizamos Response.
Nota 2: El objeto HttpCookie sólo contiene a la cookie, si queremos darle valor a los cambios que le hagamos, siempre debemos utilizar el Response y el Request.
Aplicar temas en nuestro sitio web
Se puede colocar el elemento <link> en la seccion <head> de la página maestra:
<head runat=”server”>
<title></title>
<asp:ContentPlaceHolder ID=”head” runat=”server”>
</asp:ContentPlaceHolder>
<link href=”../Styles/Styles.css” rel=”stylesheet” type=”text/css” />
</head>
Otra forma es agregar la carpeta App_Themes en la carpeta principal de nuestro sitio web, por defecto ir se crea una subcarpeta llama Theme1, cambiar su nombre por el tema que vamos a aplicar (en este ejemplo Monochrome). En esta subcarpeta agregar el .css que queremos aplicar a nuestro sitio. Luego ir al web.config de nuestro sitio web y directamente dentro del elemento <inside> agregar un elmento <pages>:
<system.web>
<pages theme=”Monochrome”></pages>
...
<head runat=”server”>
<title></title>
<asp:ContentPlaceHolder ID=”head” runat=”server”>
</asp:ContentPlaceHolder>
<link href=”../Styles/Styles.css” rel=”stylesheet” type=”text/css” />
</head>
Otra forma es agregar la carpeta App_Themes en la carpeta principal de nuestro sitio web, por defecto ir se crea una subcarpeta llama Theme1, cambiar su nombre por el tema que vamos a aplicar (en este ejemplo Monochrome). En esta subcarpeta agregar el .css que queremos aplicar a nuestro sitio. Luego ir al web.config de nuestro sitio web y directamente dentro del elemento <inside> agregar un elmento <pages>:
<system.web>
<pages theme=”Monochrome”></pages>
...
Extendiendo un tema
Además de archivos CSS y skins, un tema tambien puede contener imágenes. El uso mas común de imágenes en temas es enlazarlas desde tu CSS. Para hacer bien esto es importante entender como una CSS se enlaza con las imágenes.
Por su diseño, una imagen que esta enlazada a un selector CSS se buscará de forma relativa a la ubicación del archivo CSS, a menos que usted le da una ruta que comienza con una barra diagonal (/) para indicar la raíz del sitio.
Para referirse al archivo MenuBackground.jpg del folder Imagenes del tema Monochrome, tu puedes agregar la siguiente CSS a Monochrome.css
#MenuWrapper
{
background-image: url(Images/MenuBackground.jpg);
}
Si se quiere enlazar una imagen a la carpeta Images de la raíz del sitio se usaría esta CSS:
background-image: url(/Images/MenuBackground.jpg);
Además de archivos CSS y skins, un tema tambien puede contener imágenes. El uso mas común de imágenes en temas es enlazarlas desde tu CSS. Para hacer bien esto es importante entender como una CSS se enlaza con las imágenes.
Por su diseño, una imagen que esta enlazada a un selector CSS se buscará de forma relativa a la ubicación del archivo CSS, a menos que usted le da una ruta que comienza con una barra diagonal (/) para indicar la raíz del sitio.
Para referirse al archivo MenuBackground.jpg del folder Imagenes del tema Monochrome, tu puedes agregar la siguiente CSS a Monochrome.css
#MenuWrapper
{
background-image: url(Images/MenuBackground.jpg);
}
Si se quiere enlazar una imagen a la carpeta Images de la raíz del sitio se usaría esta CSS:
background-image: url(/Images/MenuBackground.jpg);
lunes, 13 de febrero de 2012
Validar la información del usuario en Web Forms
Las personas interesadas en la validación de la entrada del usuario a menudo utilizan el mantra: Nunca la entrada del usuario de confianza. Aunque esto puede parecer en un primer momento la paranoia, que es muy importante en cualquier sistema abierto. Incluso si usted piensa que usted sabe quiénes son los usuarios e incluso si usted confía en ellos por completo, a menudo no son los únicos usuarios que pueden acceder a su sistema. Tan pronto como su sitio web es a través de Internet, es un blanco potencial para los usuarios maliciosos y hackers que tratarán de encontrar una forma en su sistema. Además de estos visitantes el mal, incluso a los usuarios de confianza pueden enviar datos incorrectos en el servidor por accidente.
Para ayudarle a superar este problema tanto como sea posible, los buques de ASP.NET con una amplia gama de controles de validación que le ayudan a validar los datos, antes de que se utiliza en su aplicación. En las siguientes secciones, se ve cómo utilizar los controles de validación estándar para asegurar que el usuario envía datos válidos en el sistema.
Vista del portal web al 13 de Febrero de 2012. Formaulario para envio de información por el usuario en la pagina Contact.aspx
domingo, 12 de febrero de 2012
INTRODUCCION A CONTROLES DE USUARIO
Los controles de usuario son ideales para el marcado de encapsulación, los controles y el código que usted necesita en repetidas ocasiones a través de su sitio. En cierta medida, se ven un poco como los controles de servidor en el que pueden contener lógica de programación y presentación que se puede reutilizar en sus páginas. Sin embargo, en lugar de arrastrar los ya existentes de la Caja de herramientas de VWD, es necesario para crear sus propios controles de usuario y luego añadirlos a sus páginas ASPX, como aprender a hacer más adelante en este capítulo.
A pesar de las páginas maestras permiten crear contenido que se muestra en todas las páginas del sitio, es común tener el contenido que debe aparecer sólo en algunas pero no todas las páginas. Por ejemplo, es posible que desee mostrar un banner en algunas páginas más populares son, pero no en la página principal u otras páginas comunes.
Sin controles de usuario, debe agregar el código de la bandera (una imagen, un enlace, y así sucesivamente) a cada página que lo requiera. Cuando se desea actualizar la bandera (si desea utilizar una nueva imagen o enlace), es necesario realizar cambios en todas las páginas que lo utilizan. Si se mueve la bandera de un control de usuario y el uso que el control en sus páginas de contenido en su lugar, todo lo que necesita cambiar es el control de usuario y las páginas que lo utilizan recoger el cambio automáticamente. Esto le da una forma flexible para crear contenido reutilizable.
Los controles de usuario tienen las siguientes similitudes con niveles normales de las páginas ASPX:
➤ ➤ Tienen una sección de marcas, donde usted puede agregar marcado estándar y controles de servidor.
➤ ➤ Pueden ser creada y diseñada con Visual Web Developer en el marcado, Diseño y Vista en dos paneles.
➤ ➤ Se puede contener la lógica de programación, ya sea en línea o con un archivo de código subyacente.
➤ ➤ Usted tiene acceso a la página basada en la información como Request.QueryString.
➤ ➤ Plantean algunos (pero no todos) de los eventos que la clase Page plantea, incluyendo Init, Load y PreRender.
A pesar de las páginas maestras permiten crear contenido que se muestra en todas las páginas del sitio, es común tener el contenido que debe aparecer sólo en algunas pero no todas las páginas. Por ejemplo, es posible que desee mostrar un banner en algunas páginas más populares son, pero no en la página principal u otras páginas comunes.
Sin controles de usuario, debe agregar el código de la bandera (una imagen, un enlace, y así sucesivamente) a cada página que lo requiera. Cuando se desea actualizar la bandera (si desea utilizar una nueva imagen o enlace), es necesario realizar cambios en todas las páginas que lo utilizan. Si se mueve la bandera de un control de usuario y el uso que el control en sus páginas de contenido en su lugar, todo lo que necesita cambiar es el control de usuario y las páginas que lo utilizan recoger el cambio automáticamente. Esto le da una forma flexible para crear contenido reutilizable.
Los controles de usuario tienen las siguientes similitudes con niveles normales de las páginas ASPX:
➤ ➤ Tienen una sección de marcas, donde usted puede agregar marcado estándar y controles de servidor.
➤ ➤ Pueden ser creada y diseñada con Visual Web Developer en el marcado, Diseño y Vista en dos paneles.
➤ ➤ Se puede contener la lógica de programación, ya sea en línea o con un archivo de código subyacente.
➤ ➤ Usted tiene acceso a la página basada en la información como Request.QueryString.
➤ ➤ Plantean algunos (pero no todos) de los eventos que la clase Page plantea, incluyendo Init, Load y PreRender.
jueves, 9 de febrero de 2012
TREE VIEW
Utilizar el control TreeView
Un TreeView es capaz de mostrar una lista jerárquica de elementos, de forma similar al árbol que se ve en el Explorador de Windows. Los items se pueden expandir y contraer con los pequeños iconos de más y menos delante de los items que contienen elementos secundarios. Como tal, es una herramienta ideal para visualizar el mapa del sitio de la página web como un medio para navegar por el sitio. Los datos utilizados por el control TreeView no se limita al archivo Web.sitemap, sin embargo. Usted también puede unirse a regular los archivos XML, e incluso crear un TreeView o de sus elementos (llamados nodos) mediante programación.
Uso del control SiteMapPath
El control SiteMapPath muestra dónde usted está en la estructura del sitio. Se presenta como una serie de enlaces, a menudo se refiere como una ruta de navegación. Es un control bastante simple pero potente, con más de 50 propiedades públicas se puede establecer a través de la rejilla de propiedades para influir en la forma en que se ve. Al igual que el menú y TreeView tiene una serie de propiedades de estilo que se utiliza para cambiar el aspecto de elementos como el nodo actual, un nodo normal, y el separador de ruta.
Un TreeView es capaz de mostrar una lista jerárquica de elementos, de forma similar al árbol que se ve en el Explorador de Windows. Los items se pueden expandir y contraer con los pequeños iconos de más y menos delante de los items que contienen elementos secundarios. Como tal, es una herramienta ideal para visualizar el mapa del sitio de la página web como un medio para navegar por el sitio. Los datos utilizados por el control TreeView no se limita al archivo Web.sitemap, sin embargo. Usted también puede unirse a regular los archivos XML, e incluso crear un TreeView o de sus elementos (llamados nodos) mediante programación.
Uso del control SiteMapPath
El control SiteMapPath muestra dónde usted está en la estructura del sitio. Se presenta como una serie de enlaces, a menudo se refiere como una ruta de navegación. Es un control bastante simple pero potente, con más de 50 propiedades públicas se puede establecer a través de la rejilla de propiedades para influir en la forma en que se ve. Al igual que el menú y TreeView tiene una serie de propiedades de estilo que se utiliza para cambiar el aspecto de elementos como el nodo actual, un nodo normal, y el separador de ruta.
domingo, 5 de febrero de 2012
DIA 17: URLs ABSOLUTAS Y RELATIVAS
URLs absolutas y relativas
Al igual que los seres humanos, al dar instrucciones de localización de un objeto o dirección podemos utilizar distintos métodos para describir su ubicación, podemos hacer lo mismo en las URL y la localización de ficheros y recursos. Generalmente al describir una localización analizamos de donde partimos y donde hay que llegar.
Por ejemplo: No es lo mismo describir la localización de unos importantes papeles que están en la mesa del salón de mi casa a una persona que esta en el salón, que a una persona que tiene que recoger esos papeles, esta en otra ciudad y no conoce donde vivo.
Con este símil de la vida diaria, espero que quede claro los conceptos de URL completa, URL absoluta y URL relativa. Estos tres sistemas de localización ofrecen llegar a un destino describiendo todo o parte de la ruta de ubicación. Sobre todo es de utilidad en la programación web de los vínculos (enlaces a recursos o ficheros).
La URL completa: Siempre permite localizar el recurso independientemente de donde partamos, ya que incluye toda la ruta completa de ubicación. El inconveniente de este sistema, en la programación web, es que si el recurso web cambia de ubicación, debemos revisar toda la programación web de los enlaces con urls completas y cambiarlos. Si se van a crear vínculos con una página Web que no pertenece a mi sitio Web, debe utilizar una URL completa.
Ejemplo: http://www.servidor.com/directorio/recurso
La URL absoluta: Se parte de la base que el recurso al que queremos llegar esta en el mismo servidor del que partimos con lo que podemos ahorrarnos algunos parámetros en la descripción. Además no tendremos tantos problemas en la programación web si cambiamos de servidor ya que los enlaces podrían seguir funcionando.
Ejemplo: /directorio/recurso
La URL relativa: Las URL relativas suelen ser las más fáciles de utilizar para establecer un vínculo con archivos que van a permanecer en la misma carpeta que el documento actual. No les afectan cambios de servidor y en algunos casos ni el cambio de nombres de carpetas.
Ejemplo: ../recurso
________________________________________________________________________________
Utilizando el control MENÚ
El control del menú es muy fácil de usar y ajustar. Para crear un menú básico, todo lo que necesita hacer es agregar una a su página, conectarlo a un control SiteMapDataSource, y ya está. Pero, al mismo tiempo, el control es bastante flexible y tiene alrededor de 80 propiedades públicas (incluidos los compartidos por todos los controles) que le permiten ajustar cada aspecto visual del control. La siguiente tabla muestra las propiedades más comunes que se utilizan con el menú. Consulte la ayuda en línea de MSDN para obtener una descripción completa de este control.
________________________________________________________________________________
Vista de la página al 05 de febrero de 2012
Al igual que los seres humanos, al dar instrucciones de localización de un objeto o dirección podemos utilizar distintos métodos para describir su ubicación, podemos hacer lo mismo en las URL y la localización de ficheros y recursos. Generalmente al describir una localización analizamos de donde partimos y donde hay que llegar.
Por ejemplo: No es lo mismo describir la localización de unos importantes papeles que están en la mesa del salón de mi casa a una persona que esta en el salón, que a una persona que tiene que recoger esos papeles, esta en otra ciudad y no conoce donde vivo.
Con este símil de la vida diaria, espero que quede claro los conceptos de URL completa, URL absoluta y URL relativa. Estos tres sistemas de localización ofrecen llegar a un destino describiendo todo o parte de la ruta de ubicación. Sobre todo es de utilidad en la programación web de los vínculos (enlaces a recursos o ficheros).
La URL completa: Siempre permite localizar el recurso independientemente de donde partamos, ya que incluye toda la ruta completa de ubicación. El inconveniente de este sistema, en la programación web, es que si el recurso web cambia de ubicación, debemos revisar toda la programación web de los enlaces con urls completas y cambiarlos. Si se van a crear vínculos con una página Web que no pertenece a mi sitio Web, debe utilizar una URL completa.
Ejemplo: http://www.servidor.com/directorio/recurso
La URL absoluta: Se parte de la base que el recurso al que queremos llegar esta en el mismo servidor del que partimos con lo que podemos ahorrarnos algunos parámetros en la descripción. Además no tendremos tantos problemas en la programación web si cambiamos de servidor ya que los enlaces podrían seguir funcionando.
Ejemplo: /directorio/recurso
La URL relativa: Las URL relativas suelen ser las más fáciles de utilizar para establecer un vínculo con archivos que van a permanecer en la misma carpeta que el documento actual. No les afectan cambios de servidor y en algunos casos ni el cambio de nombres de carpetas.
Ejemplo: ../recurso
________________________________________________________________________________
Utilizando el control MENÚ
El control del menú es muy fácil de usar y ajustar. Para crear un menú básico, todo lo que necesita hacer es agregar una a su página, conectarlo a un control SiteMapDataSource, y ya está. Pero, al mismo tiempo, el control es bastante flexible y tiene alrededor de 80 propiedades públicas (incluidos los compartidos por todos los controles) que le permiten ajustar cada aspecto visual del control. La siguiente tabla muestra las propiedades más comunes que se utilizan con el menú. Consulte la ayuda en línea de MSDN para obtener una descripción completa de este control.
________________________________________________________________________________
Vista de la página al 05 de febrero de 2012
Suscribirse a:
Comentarios (Atom)

