Ricreare “Carattere” Comportamento Proprietà
-
29-09-2019 - |
Domanda
I controlli che ereditano off di System.Web.UI.WebControls.WebControl
hanno una proprietà chiamata Font
. Il tipo è System.Web.Ui.WebControls.FontInfo
.
Quando si lavora con questi controlli nella finestra di progettazione, si rompe la proprietà Font
in più immobili come Font-Bold
, Font-Italic
, ecc Quando si lavora con questi stessi WebControls nel codebehind, c'è solo una proprietà Font
(senza Font-Bold
, Font-Italic
, ecc ).
Come può questo comportamento potrebbe essere ricreato manualmente durante la creazione WebControls? In particolare, quale combinazione di attributi System.ComponentModel
può mostrare / nascondere questi immobili a Intellisense?
Soluzione 3
La proprietà che si desidera ampliare (Font
in questo caso) dovrebbe avere attributo System.ComponentModel.DesignerSerializationVisibility
insieme a System.ComponentModel.DesignerSerializationVisibility.Content
. Questo è dettagliato nel seguente link
Altri suggerimenti
Si dovrebbe essere in grado di accedere a grassetto, corsivo e così via come proprietà booleane:
http://msdn.microsoft .com / it-iT / library / 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 proprietà-ripartizione avviene automaticamente.
Se si dispone di un controllo che ha una proprietà che ha proprietà di un proprio
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; }
}
è possibile utilizzare la sintassi di Font-Bold nel aspx, il che significa che
<cc:ServerControl1 runat="server" ID="scOne"
Composite-ItemOne="true" Composite-ItemTwo ="stringx"/>
funzioneranno come previsto. Tuttavia, completamento automatico non funziona, e non sono sicuro quale combinazione di System.ComponentModel
attributi è necessario per rendere comportarsi come il Font-Bold.