Recreando comportamiento de la propiedad “Fuente”
-
29-09-2019 - |
Pregunta
Los controles que heredan fuera de System.Web.UI.WebControls.WebControl
tiene una propiedad llamada Font
. El tipo es System.Web.Ui.WebControls.FontInfo
.
Cuando se trabaja con estos controles en el diseñador, que estalla la propiedad Font
en múltiples propiedades como Font-Bold
, Font-Italic
, etc. Cuando se trabaja con estos mismos WebControls en el código subyacente, sólo hay una propiedad Font
(sin Font-Bold
, Font-Italic
, etc. ).
¿Cómo puede este comportamiento se volverá a crear manualmente al crear WebControls? Específicamente, ¿qué combinación de atributos System.ComponentModel
puede mostrar / ocultar estas propiedades en Intellisense?
Solución 3
La propiedad que desea ampliar (Font
en este caso) debe tener establecido el atributo System.ComponentModel.DesignerSerializationVisibility
a System.ComponentModel.DesignerSerializationVisibility.Content
. Esto se detalla en el siguiente enlace
Otros consejos
Se debe poder acceder a la negrita, cursiva y así sucesivamente como propiedades booleanas:
http://msdn.microsoft .com / es-eS / biblioteca / system.web.ui.webcontrols.fontinfo.aspx
void Page_Load(object sender, EventArgs e)
{
// When the page loads, set the the myLabel Label control's FontInfo properties.
// Note that myLabel.Font is a FontInfo object.
myLabel.Font.Bold = true;
myLabel.Font.Italic = false;
myLabel.Font.Name = "verdana";
myLabel.Font.Overline = false;
myLabel.Font.Size = 10;
myLabel.Font.Strikeout = false;
myLabel.Font.Underline = true;
// Write information on the FontInfo object to the myLabel label.
myLabel.Text = myLabel.Font.ToString();
}
La propiedad de desintegración está ocurriendo de forma automática.
Si usted tiene un control que tiene una propiedad que tiene sus propias propiedades
public class ServerControl1 : WebControl
{
public CompositeItem Composite { get; set; }
public ServerControl1()
{
Composite = new CompositeItem();
}
}
public class CompositeItem
{
public bool ItemOne { get; set; }
public string ItemTwo { get; set; }
public int ItemThree { get; set; }
}
puede utilizar la sintaxis de fuente-Bold en el aspx, lo que significa que
<cc:ServerControl1 runat="server" ID="scOne"
Composite-ItemOne="true" Composite-ItemTwo ="stringx"/>
funcionará como se espera. Sin embargo, Autocompletar no funciona, y no estoy seguro de qué atributos se requiere combinación de System.ComponentModel
para hacer que se comporte como la Font-Bold.