Recreating „Font“ Property Verhalten
-
29-09-2019 - |
Frage
Steuerelemente, die von System.Web.UI.WebControls.WebControl
erbte off hat eine Eigenschaft namens Font
. Der Typ ist System.Web.Ui.WebControls.FontInfo
.
Wenn Sie mit diesen Kontrollen im Designer arbeitet, bricht es die Font
Eigenschaft in mehrere Eigenschaften wie Font-Bold
aus, Font-Italic
usw. Wenn mit diesen gleichen WebControls in dem Code-Behind arbeitet, gibt es nur eine Font
Eigenschaft (keine Font-Bold
, Font-Italic
, etc ).
Wie kann man dieses Verhalten manuell neu erstellt, wenn WebControls erstellen? Insbesondere, welche Kombination von System.ComponentModel
Attribute zeigen / verstecken diese Eigenschaften in Intellisense?
Lösung 3
Die Eigenschaft, die Sie erweitern möchten (Font
in diesem Fall) sollte Attribut System.ComponentModel.DesignerSerializationVisibility
Satz System.ComponentModel.DesignerSerializationVisibility.Content
haben. Dies wird in dem folgenden Link detaillierte
Andere Tipps
Sie sollten in der Lage sein Bold zugreifen, Kursiv usw. als boolean Eigenschaften:
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();
}
Der Objekt-Abbau geschieht automatisch.
Wenn Sie ein Steuerelement, das eine Eigenschaft hat, die Eigenschaften seiner eigenen
hatpublic 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; }
}
können Sie die Font-Bold-Syntax in der aspx verwenden, was bedeutet, dass
<cc:ServerControl1 runat="server" ID="scOne"
Composite-ItemOne="true" Composite-ItemTwo ="stringx"/>
wird wie erwartet. Doch die automatische Vervollständigung nicht funktioniert, und ich bin nicht sicher, welche Kombination von System.ComponentModel
Attributen erforderlich ist, um es wie der Font-Bold zu machen verhalten.