NotifyParentPropertyAttribute Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Geeft aan dat de bovenliggende eigenschap wordt gewaarschuwd wanneer de waarde van de eigenschap waarop dit kenmerk wordt toegepast, wordt gewijzigd. Deze klasse kan niet worden overgenomen.
public ref class NotifyParentPropertyAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Property)]
public sealed class NotifyParentPropertyAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Property)>]
type NotifyParentPropertyAttribute = class
inherit Attribute
Public NotInheritable Class NotifyParentPropertyAttribute
Inherits Attribute
- Overname
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de NotifyParentPropertyAttribute en de ExpandableObjectConverter klasse gebruikt om een uitbreidbare eigenschap te maken voor een aangepast besturingselement.
using System;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Windows.Forms;
namespace ExpandableObjectDemo;
public partial class DemoControl : UserControl
{
Container components;
public DemoControl() => InitializeComponent();
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
[Category("Demo")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public BorderAppearance Border { get; set; } = new();
void InitializeComponent()
{
components = new Container();
AutoScaleMode = AutoScaleMode.Font;
}
}
[TypeConverter(typeof(BorderAppearanceConverter))]
public class BorderAppearance
{
int borderSizeValue = 1;
Color borderColorValue = Color.Empty;
[Browsable(true),
NotifyParentProperty(true),
EditorBrowsable(EditorBrowsableState.Always),
DefaultValue(1)]
public int BorderSize
{
get => borderSizeValue;
set
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(
"BorderSize",
value,
"must be >= 0");
}
if (borderSizeValue != value)
{
borderSizeValue = value;
}
}
}
[Browsable(true)]
[NotifyParentProperty(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
[DefaultValue(typeof(Color), "")]
public Color BorderColor
{
get => borderColorValue;
set
{
if (value.Equals(Color.Transparent))
{
throw new NotSupportedException("Transparent colors are not supported.");
}
if (borderColorValue != value)
{
borderColorValue = value;
}
}
}
}
public class BorderAppearanceConverter : ExpandableObjectConverter
{
// This override prevents the PropertyGrid from
// displaying the full type name in the value cell.
public override object ConvertTo(
ITypeDescriptorContext context,
CultureInfo culture,
object value,
Type destinationType) => destinationType == typeof(string)
? ""
: base.ConvertTo(
context,
culture,
value,
destinationType);
}
Imports System.ComponentModel
Imports System.Drawing
Imports System.Globalization
Imports System.Windows.Forms
Public Class DemoControl
Inherits UserControl
Private borderAppearanceValue As New BorderAppearance()
Private components As System.ComponentModel.IContainer = Nothing
Public Sub New()
InitializeComponent()
End Sub
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso (components IsNot Nothing) Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
<Browsable(True), _
EditorBrowsable(EditorBrowsableState.Always), _
Category("Demo"), _
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property Border() As BorderAppearance
Get
Return Me.borderAppearanceValue
End Get
Set(ByVal value As BorderAppearance)
Me.borderAppearanceValue = value
End Set
End Property
Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
End Sub
End Class
<TypeConverter(GetType(BorderAppearanceConverter))> _
Public Class BorderAppearance
Private borderSizeValue As Integer = 1
Private borderColorValue As Color = Color.Empty
<Browsable(True), NotifyParentProperty(True), EditorBrowsable(EditorBrowsableState.Always), DefaultValue(1)> _
Public Property BorderSize() As Integer
Get
Return borderSizeValue
End Get
Set
If value < 0 Then
Throw New ArgumentOutOfRangeException("BorderSize", value, "must be >= 0")
End If
If borderSizeValue <> value Then
borderSizeValue = value
End If
End Set
End Property
<Browsable(True), NotifyParentProperty(True), EditorBrowsable(EditorBrowsableState.Always), DefaultValue(GetType(Color), "")> _
Public Property BorderColor() As Color
Get
Return borderColorValue
End Get
Set
If value.Equals(Color.Transparent) Then
Throw New NotSupportedException("Transparent colors are not supported.")
End If
If borderColorValue <> value Then
borderColorValue = value
End If
End Set
End Property
End Class
Public Class BorderAppearanceConverter
Inherits ExpandableObjectConverter
' This override prevents the PropertyGrid from
' displaying the full type name in the value cell.
Public Overrides Function ConvertTo(ByVal context As ITypeDescriptorContext, ByVal culture As CultureInfo, ByVal value As Object, ByVal destinationType As Type) As Object
If destinationType Is GetType(String) Then
Return ""
End If
Return MyBase.ConvertTo(context, culture, value, destinationType)
End Function
End Class
Opmerkingen
Van toepassing NotifyParentPropertyAttribute op een eigenschap als de bovenliggende eigenschap melding moet ontvangen van wijzigingen in de waarden van de eigenschap. In de venster Eigenschappen heeft de eigenschap DataGridView.RowTemplate bijvoorbeeld geneste eigenschappen zoals Height en DefaultCellStyle. Deze geneste eigenschappen worden gemarkeerd zodat NotifyParentPropertyAttribute(true) de bovenliggende eigenschap de waarde ervan kan bijwerken en wordt weergegeven wanneer de eigenschapswaarden worden gewijzigd.
Zie Kenmerken voor meer informatie over het gebruik van kenmerken.
Constructors
| Name | Description |
|---|---|
| NotifyParentPropertyAttribute(Boolean) |
Initialiseert een nieuw exemplaar van de NotifyParentPropertyAttribute klasse met behulp van de opgegeven waarde om te bepalen of de bovenliggende eigenschap op de hoogte wordt gesteld van wijzigingen in de waarde van de eigenschap. |
Velden
| Name | Description |
|---|---|
| Default |
Geeft de standaardstatus van het kenmerk aan, dat de eigenschap de bovenliggende eigenschap niet op de hoogte moet stellen van wijzigingen in de waarde. Dit veld is alleen-lezen. |
| No |
Geeft aan dat de bovenliggende eigenschap niet op de hoogte wordt gesteld van wijzigingen in de waarde van de eigenschap. Dit veld is alleen-lezen. |
| Yes |
Geeft aan dat de bovenliggende eigenschap wordt geïnformeerd over wijzigingen in de waarde van de eigenschap. Dit veld is alleen-lezen. |
Eigenschappen
| Name | Description |
|---|---|
| NotifyParent |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de bovenliggende eigenschap op de hoogte moet worden gesteld van wijzigingen in de waarde van de eigenschap. |
| TypeId |
Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id. (Overgenomen van Attribute) |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Hiermee wordt een waarde opgehaald die aangeeft of het opgegeven object hetzelfde is als het huidige object. |
| GetHashCode() |
Hiermee haalt u de hashcode voor dit object op. |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| IsDefaultAttribute() |
Hiermee wordt een waarde opgehaald die aangeeft of de huidige waarde van het kenmerk de standaardwaarde voor het kenmerk is. |
| Match(Object) |
Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1). (Overgenomen van Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven. (Overgenomen van Attribute) |