TextField 클래스
텍스트 레이블 또는 영역을 표시할 수 있는 모양의 일부를 나타내는 Lightweight 개체입니다.
상속 계층 구조
System.Object
Microsoft.VisualStudio.Modeling.Diagrams.ShapeField
Microsoft.VisualStudio.Modeling.Diagrams.TextField
Microsoft.VisualStudio.Modeling.Diagrams.LabelTextField
네임스페이스: Microsoft.VisualStudio.Modeling.Diagrams
어셈블리: Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0(Microsoft.VisualStudio.Modeling.Sdk.Diagrams.12.0.dll)
구문
‘선언
Public Class TextField _
Inherits ShapeField
public class TextField : ShapeField
TextField 형식에서는 다음과 같은 멤버를 노출합니다.
생성자
이름 | 설명 | |
---|---|---|
TextField | TextField 클래스의 새 인스턴스를 초기화합니다. |
위쪽
속성
이름 | 설명 | |
---|---|---|
AnchoringBehavior | 필드의 콘텐츠가 부모 ShapeElement에 상대적으로 자신을 배치하고 크기를 조정해야 하는 방법을 설명합니다. (ShapeField에서 상속됨) | |
DefaultAccessibleDescription | 액세스 가능한 기본 설명을 가져오거나 설정합니다. (ShapeField에서 상속됨) | |
DefaultAccessibleName | 액세스 가능한 개체에 대한 모양 필드의 기본 이름을 가져오거나 설정합니다. (ShapeField에서 상속됨) | |
DefaultAccessibleState | 액세스 가능한 개체에 대한 모양 필드의 기본 상태를 가져옵니다. (ShapeField에서 상속됨) | |
DefaultAutoSize | 값이 true인 경우 표시 텍스트 길이를 수용하도록 텍스트 필드의 최소 보고 크기가 커집니다.자동으로 크기를 조정할 수 있는 텍스트 필드는 AnchoringBehavior에 지정된 최소 크기를 계속해서 고려합니다. | |
DefaultBackgroundBrushId | 모양 필드의 배경을 그리는 기본 브러시의 ID를 가져오거나 설정합니다. (ShapeField에서 상속됨) | |
DefaultCommitOnEscape | Escape 키로 편집을 커밋할 것인지 여부를 나타내는 값을 가져오거나 설정합니다.True인 경우 내부 편집을 위해 Enter 키가 CRLF로 사용됩니다. | |
DefaultFocusable | 모양 필드를 가져오고 포커스를 받을 수 있는지 여부를 확인하거나 모양 필드가 포커스를 받을 수 있도록 설정합니다. (ShapeField에서 상속됨) | |
DefaultFontId | 기본 글꼴 id를 가져오거나 설정합니다. | |
DefaultInactiveSelectedBackgroundBrushId | 모양 필드에 대한 기본 배경 브러시의 ID를 가져오거나 설정합니다. (ShapeField에서 상속됨) | |
DefaultInactiveSelectedTextBrushId | 선택한 비활성 텍스트에 대한 기본 브러시 id를 가져오거나 설정합니다. | |
DefaultIsHorizontal | 텍스트에 대한 기본 가로 상태를 가져오거나 설정합니다. | |
DefaultMultipleLine | true인 경우 텍스트가 둘 이상의 줄에 자동으로 줄바꿈되어 사용 가능한 너비에 맞춥니다. | |
DefaultPenId | 모양 필드에 사용할 기본 펜의 ID를 가져오거나 설정합니다. (ShapeField에서 상속됨) | |
DefaultReflectParentFocusedState | 자식 모양 필드를 가져오고 부모 모양이 포커스를 받거나 부모 모양의 포커스 상태를 반영하는 기능을 설정할 때 자식 모양 필드가 포커스를 받아야 하는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
DefaultReflectParentSelectedState | 자식 모양 필드를 가져오고 부모 모양이 선택되거나 부모 모양의 선택 상태를 반영하는 기능을 설정할 때 자식 모양 필드가 선택되어야 하는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
DefaultSelectable | 모양 필드를 가져오고 모양 필드가 기본적으로 선택될 수 있는지 여부를 확인하거나 모양 필드의 기본 선택 상태를 설정합니다. (ShapeField에서 상속됨) | |
DefaultSelectedBackgroundBrushId | 모양 필드에 대한 기본 배경 브러시의 ID를 가져오거나 설정합니다. (ShapeField에서 상속됨) | |
DefaultSelectedTextBrushId | 선택한 텍스트에 대한 기본 브러시 id를 가져오거나 설정합니다. | |
DefaultStringFormat | 텍스트 그리기에 대한 기본 문자열 형식을 가져오거나 설정합니다. | |
DefaultText | 그릴 기본 텍스트를 가져오거나 설정합니다. | |
DefaultTextBrushId | 텍스트에 대한 기본 브러시를 가져오거나 설정합니다. | |
DefaultVisibility | 모양 필드를 가져오고 모양 필드가 기본적으로 나타나는지 여부를 확인하거나 모양 필드의 기본 표시 여부를 설정합니다. (ShapeField에서 상속됨) | |
DisplayMember | 표시 텍스트와 관련된 속성 이름을 가져오거나 설정합니다. | |
DrawBorder | (사용 하지 마십시오. 변경됩니다.) | |
FillBackground | (사용 하지 마십시오. 변경됩니다.) | |
Name | 셰이프 필드의 이름을 가져옵니다. (ShapeField에서 상속됨) |
위쪽
메서드
이름 | 설명 | |
---|---|---|
AccessibleDoDefaultAction | 액세스 가능한 개체에 기본 작업을 수행합니다. (ShapeField에서 상속됨) | |
AllowInPlaceEditorAutoSize | 기본적으로 필드가 자동 크기를 지원하는 경우 내부 편집기를 통해 자동으로 크기가 조정되도록 허용합니다. (ShapeField.AllowInPlaceEditorAutoSize(ShapeElement)을(를) 재정의함) | |
AssociateValueWith(Store, AssociatedPropertyInfo) | 셰이프 필드를 셰이프 요소에 할당된 도메인 속성과 연결합니다. (ShapeField에서 상속됨) | |
AssociateValueWith(Store, Guid) | 셰이프 필드를 셰이프 요소에 할당된 도메인 속성과 연결합니다. (ShapeField에서 상속됨) | |
AssociateValueWith(Store, Guid, AssociatedPropertyInfo) | 셰이프 필드를 셰이프 요소에 할당된 도메인 속성과 연결합니다. (ShapeField에서 상속됨) | |
AssociateVisibilityWith(Store, AssociatedPropertyInfo) | 모양 필드의 표시 유형을 모양 요소에 할당된 도메인 속성과 연결합니다. (ShapeField에서 상속됨) | |
AssociateVisibilityWith(Store, Guid) | 모양 필드의 표시 유형을 모양 요소에 할당된 도메인 속성과 연결합니다. (ShapeField에서 상속됨) | |
AssociateVisibilityWith(Store, Guid, AssociatedPropertyInfo) | 모양 필드의 표시 유형을 모양 요소에 할당된 도메인 속성과 연결합니다. (ShapeField에서 상속됨) | |
CanEditValue | 이 필드의 값을 편집할 수 있는지 여부를 나타내는 값을 반환합니다. (ShapeField.CanEditValue(ShapeElement, DiagramClientView)을(를) 재정의함) | |
CommitPendingEdit | 보류 중인 편집을 커밋합니다. (ShapeField.CommitPendingEdit(ShapeElement, DiagramClientView)을(를) 재정의함) | |
DoHitTest | 다이어그램에 지정된 지점에서 적중 테스트를 수행하여 지점이 모양 필드 경계 내에 있는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
DoKeyboardNavigation | 모양 필드에서 키보드를 사용하여 이동합니다. (ShapeField에서 상속됨) | |
DoPaint | 텍스트 필드를 그립니다. (ShapeField.DoPaint(DiagramPaintEventArgs, ShapeElement)을(를) 재정의함) | |
EditValue(ShapeElement, DiagramClientView) | 현재 위치에서 편집기를 호출합니다. (ShapeField.EditValue(ShapeElement, DiagramClientView)을(를) 재정의함) | |
EditValue(ShapeElement, DiagramClientView, PointD) | 지정된 마우스 위치를 사용하여 캐럿을 설정하여 현재 위치에서 편집기를 호출합니다. (ShapeField.EditValue(ShapeElement, DiagramClientView, PointD)을(를) 재정의함) | |
EditValue(ShapeElement, DiagramClientView, String) | 내부 편집기를 호출한 다음 텍스트를 지정된 텍스트로 바꿉니다. | |
Equals | 지정한 개체와 현재 개체가 같은지 여부를 확인합니다. (Object에서 상속됨) | |
Finalize | 가비지 수집에서 회수하기 전에 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨) | |
FindFirstChild | 부모 모양 필드에서 첫 번째 자식 모양 필드를 찾습니다. (ShapeField에서 상속됨) | |
FindLastChild | 부모 모양 필드에서 마지막 자식 모양 필드를 찾습니다. (ShapeField에서 상속됨) | |
FindNextChild | 부모 모양 필드에서 다음 자식 모양 필드를 찾습니다. (ShapeField에서 상속됨) | |
FindNextInChildSubFields | 탐색 순서에서 다음 자식 모양 필드를 찾습니다. (ShapeField에서 상속됨) | |
FindPreviousChild | 부모 모양 필드에서 이전 자식 모양 필드를 찾습니다. (ShapeField에서 상속됨) | |
FindPreviousInChildSubFields | 탐색 순서에서 이전 자식 모양 필드를 찾습니다. (ShapeField에서 상속됨) | |
Focused | 모양 필드를 가져오고 여기에 포커스가 있는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
GetAccessibilityObject | 셰이프 필드에 할당되는 액세스 가능한 개체를 가져옵니다. (ShapeField에서 상속됨) | |
GetAccessibleChild | 자식 모양 필드에 대한 Accessibility 개체를 가져옵니다. (ShapeField에서 상속됨) | |
GetAccessibleChildCount | 부모 모양 필드 및 자식 모양 필드에 할당된 내게 필요한 옵션 개체의 수를 가져옵니다. (ShapeField에서 상속됨) | |
GetAccessibleDefaultActionDescription | 액세스 가능한 개체에 대한 모양 필드의 기본 목적을 가져옵니다. (ShapeField에서 상속됨) | |
GetAccessibleDescription | 텍스트 필드에 대한 기본 액세스 가능한 설명을 반환합니다. (ShapeField.GetAccessibleDescription(ShapeElement)을(를) 재정의함) | |
GetAccessibleHelp | 액세스 가능한 개체에 대한 모양 필드 도움말을 가져옵니다. (ShapeField에서 상속됨) | |
GetAccessibleHelpTopicFileName | 액세스 가능한 개체에 대한 도움말의 항목을 가져옵니다. (ShapeField에서 상속됨) | |
GetAccessibleHelpTopicId | 액세스 가능한 개체의 도움말 항목에 할당되는 ID를 가져옵니다. (ShapeField에서 상속됨) | |
GetAccessibleName | 표시 텍스트를 액세스 가능한 이름으로 반환합니다. (ShapeField.GetAccessibleName(ShapeElement)을(를) 재정의함) | |
GetAccessibleRole | 이 ShapeField의 액세스 가능한 역할을 검색합니다. (ShapeField.GetAccessibleRole(ShapeElement)을(를) 재정의함) | |
GetAccessibleState | 이 TextField의 액세스 가능한 상태를 검색합니다.기본적으로 TextField는 포커스를 받을 수 없고 표시할 텍스트가 없는 경우 내게 필요한 옵션 지원 클라이언트에 표시되지 않습니다. (ShapeField.GetAccessibleState(ShapeElement, DiagramClientView)을(를) 재정의함) | |
GetAccessibleValue | 액세스 가능한 값을 반환합니다. (ShapeField.GetAccessibleValue(ShapeElement)을(를) 재정의함) | |
GetActiveInPlaceEditor | 활성 내부 편집기의 컨트롤을 반환합니다.이 메서드는 이 필드에 대해 활성화된 내부 편집기가 없는 경우 null을 반환할 수도 있습니다. (ShapeField.GetActiveInPlaceEditor(ShapeElement, DiagramClientView)을(를) 재정의함) | |
GetAutoSize | 값이 true인 경우 표시 텍스트 길이를 수용하도록 텍스트 필드의 최소 보고 필수 크기가 커집니다.자동으로 크기를 조정할 수 있는 텍스트 필드는 AnchoringBehavior에 지정된 최소 크기를 계속해서 고려합니다. | |
GetBackgroundBrush | 이 모양 필드가 할당된 모양 요소의 배경을 그리는 브러시를 가져옵니다. (ShapeField에서 상속됨) | |
GetBackgroundBrushId | 이 모양 필드가 할당된 모양 요소의 배경을 그리는 브러시의 ID를 가져옵니다. (ShapeField에서 상속됨) | |
GetBounds | 모양 필드의 절대 범위를 가져옵니다. (ShapeField에서 상속됨) | |
GetCursor | 마우스가 모양 필드를 가리키고 있을 때 나타나는 포인터를 가져옵니다. (ShapeField에서 상속됨) | |
GetDisplayText | 이 필드에 의해 표시될 텍스트를 가져옵니다. | |
GetFocusable | 모양 필드를 가져오고 이 모양 필드가 포커스를 받을 수 있는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
GetFont | 지정한 ShapeElement 인스턴스를 그리는 데 사용할 글꼴을 가져옵니다. | |
GetFontHeight | 세계 단위에서 (즉, 텍스트의 줄 높이)이이 글꼴의 줄 간격을 가져옵니다.줄 간격은 어센더 + 디센더 + 일부 권장 여분입니다.어센더는 기준선이 넘는 문자의 높이이며 디센더는 기준선을 밑도는 문자의 높이를 말합니다.여분은 디센더 아래에 있습니다. | |
GetFontId | 지정한 ShapeElement 인스턴스를 그리는 데 사용할 글꼴의 ID를 가져옵니다. | |
GetHashCode | 기본 해시 함수로 작동합니다. (Object에서 상속됨) | |
GetInPlaceEditorBounds | 내부 편집기의 범위를 가져옵니다. (ShapeField에서 상속됨) | |
GetMaximumInPlaceEditorSize | 기본적으로 내부 편집 컨트롤을 통해 최대 75자까지 크기를 조정할 수 있습니다. (ShapeField.GetMaximumInPlaceEditorSize(ShapeElement)을(를) 재정의함) | |
GetMinimumInPlaceEditorSize | 최소 내부 편집기 크기는 문자의 최소 너비 및 줄 높이를 기준으로 합니다. (ShapeField.GetMinimumInPlaceEditorSize(ShapeElement)을(를) 재정의함) | |
GetMinimumSize | 이 ShapeField의 최소 너비와 높이를 world 단위로 가져옵니다. (ShapeField.GetMinimumSize(ShapeElement)을(를) 재정의함) | |
GetMultipleLine | true인 경우 텍스트가 둘 이상의 줄에 줄바꿈되어 사용 가능한 너비에 맞출 수 있습니다. | |
GetPen | 모양 필드에 할당되는 모양 요소를 그리는 펜을 가져옵니다. (ShapeField에서 상속됨) | |
GetPenId | 모양 필드가 할당된 모양 요소를 그리는 펜의 ID를 가져옵니다. (ShapeField에서 상속됨) | |
GetPotentialMouseAction | 사용자가 다이어그램에서 특정 지점을 클릭할 때 활성화할 마우스 동작을 가져옵니다. (ShapeField에서 상속됨) | |
GetSelectable | 모양 필드를 가져오고 선택할 수 있는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
GetStringFormat | 지정한 ShapeElement 인스턴스의 텍스트를 그리는 데 사용할 문자열 서식을 가져옵니다. | |
GetTextBrush | 지정한 ShapeElement 인스턴스의 텍스트를 그리는 데 사용할 브러시를 가져옵니다. | |
GetTextBrushId | 지정한 ShapeElement 인스턴스의 텍스트를 그리는 데 사용할 브러시의 ID를 가져옵니다. | |
GetType | 현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨) | |
GetValue | 이 TextFiedl의 값을 가져옵니다. (ShapeField.GetValue(ShapeElement)을(를) 재정의함) | |
GetValueDomainPropertyInfo | 모양 필드의 값에 할당되는 도메인 속성을 가져옵니다. (ShapeField에서 상속됨) | |
GetVisible | 모양 필드를 가져오고 표시되는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
HasFocusedAppearance | 모양 필드를 가져오고 포커스를 표시해야 하는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
HasPendingEdit | 내부 편집이 활성화되어 있는지 여부를 보류중인 커밋으로 나타내는 값을 반환합니다. (ShapeField.HasPendingEdit(ShapeElement, DiagramClientView)을(를) 재정의함) | |
HasSelectedAppearance | 모양 필드를 가져오고 선택할 수 있도록 표시되는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
IsNavigationKey(Char) | 사용자가 누른 키를 가져오고 모양 필드 간을 탐색하는 데 해당 키를 사용할 수 있는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
IsNavigationKey(Keys) | 사용자가 누른 키를 가져오고 모양 필드 간을 탐색하는 데 해당 키를 사용할 수 있는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
MeasureDisplayText | 지정된 텍스트를 측정하는 도우미 메서드입니다. | |
MemberwiseClone | 현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨) | |
NavigateAscend | 선택된 모양에 대해 탐색 순서의 이전 모양 필드로 포커스를 이동합니다. (ShapeField에서 상속됨) | |
NavigateDescend | 선택된 모양에 대해 탐색 순서의 다음 모양 필드로 포커스를 이동합니다. (ShapeField에서 상속됨) | |
NavigateToFirst | 선택된 모양에 대해 탐색 순서의 첫 번째 모양 필드로 포커스를 이동합니다. (ShapeField에서 상속됨) | |
NavigateToLast | 선택된 모양에 대해 탐색 순서의 마지막 모양 필드로 포커스를 이동합니다. (ShapeField에서 상속됨) | |
NavigateToNext | 선택된 모양에 대해 탐색 순서의 다음 모양 필드로 포커스를 이동합니다. (ShapeField에서 상속됨) | |
NavigateToPrevious | 선택된 모양에 대해 탐색 순서의 이전 모양 필드로 포커스를 이동합니다. (ShapeField에서 상속됨) | |
OnBeginEdit | 내부 편집이 시작되었으면 수신기에 알립니다. (ShapeField에서 상속됨) | |
OnClick | 사용자가 셰이프 필드를 클릭했으면 수신기에 알립니다. (ShapeField에서 상속됨) | |
OnDoubleClick | 기본적으로 내부 편집을 호출합니다. (ShapeField.OnDoubleClick(DiagramPointEventArgs)을(를) 재정의함) | |
OnEndEdit | 내부 편집이 완료되었으면 수신기에 알립니다. (ShapeField에서 상속됨) | |
OnKeyDown | 사용자가 셰이프 필드를 가리킬 때 키를 누르고 있었으면 수신기에 알립니다. (ShapeField에서 상속됨) | |
OnKeyPress | 필드가 편집 가능하고 아무 영숫자 문자가 입력되면 편집기를 호출합니다. (ShapeField.OnKeyPress(DiagramKeyPressEventArgs)을(를) 재정의함) | |
OnKeyUp | 사용자가 셰이프 필드를 가리킬 때 키를 놓았으면 수신기에 알립니다. (ShapeField에서 상속됨) | |
OnMouseDown | 사용자가 셰이프 필드 위에서 마우스를 누르고 있으면 수신기에 알립니다. (ShapeField에서 상속됨) | |
OnMouseMove | 마우스가 셰이프 필드 위로 이동했음을 수신기에 알립니다. (ShapeField에서 상속됨) | |
OnMouseUp | 사용자가 셰이프 필드 위에서 마우스 단추를 놓았으면 수신기에 알립니다. (ShapeField에서 상속됨) | |
OnMouseWheel | 마우스가 셰이프 필드 위에서 회전했음을 수신기에 알립니다. (ShapeField에서 상속됨) | |
Selected | 모양 필드를 가져오고 선택되었는지 여부를 확인합니다. (ShapeField에서 상속됨) | |
SetSelectionRange | 선택 영역을 자식 모양 필드 범위로 설정합니다. (ShapeField에서 상속됨) | |
SetValue | 모양 필드에 지정한 값을 할당합니다. (ShapeField에서 상속됨) | |
SetVisible | 모양 필드의 표시 유형을 설정합니다. (ShapeField에서 상속됨) | |
ToString | 현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨) |
위쪽
설명
셰이프의 텍스트 데코레이터를 정의 하는 경우는 텍스트 필드에 표시 됩니다. 초기화 TextFields 및 다른 ShapeFields의 예 DSL 솔루션에서 Dsl\GeneratedCode\Shapes.cs를 검사 합니다.
텍스트 필드에 레이블을 할당 공간 등의 셰이프 내에서 영역을 관리 하는 개체입니다. TextField 인스턴스는 같은 클래스의 여러 셰이프 간에 공유 됩니다. TextField 인스턴스는 각 인스턴스에 대해 개별적으로 레이블의 텍스트를 저장 하지 않습니다: 대신의 GetDisplayText(ShapeElement) 메서드를 매개 변수로 모양 하며 셰이프 및 해당 모델 요소의 현재 상태에 따라 텍스트를 찾을 수 있습니다.
텍스트 필드의 모양이 확인 하는 방법
기본 DoPaint() 메서드에서이 작업을 수행 합니다. 이 해당 코드의 간소화 된 프레젠테이션.
// Simplified version:
public override void DoPaint(DiagramPaintEventArgs e, ShapeElement parentShape)
{
string text = GetDisplayText(shape);
StringFormat format = GetStringFormat(parentShape);
Brush brush = GetTextBrush(e.View, shape);
using (Font font = GetFont(shape))
{
e.Graphics.DrawString(text, font, brush, format);
}
}
// StringFormat determines whether the string is centered etc.
// To customize statically for all instances of this shape field,
// assign to DefaultStringFormat.
// To customize dynamically or per shape, override this:
public virtual StringFormat GetStringFormat(ShapeElement shape)
{ return DefaultStringFormat; }
// Override to customize the displayed string:
public virtual string GetDisplayText(ShapeElement shape)
{ return this.GetValue(shape).ToString(); }
// Brush determines the text color.
// To change the brush for every field, change the shape’s styleset.
// To customize to a brush in the style set, override GetTextBrushId.
// To change the brush to non-standard color, override this.
// Should take account of whether selected.
public virtual Brush GetTextBrush(DiagramClientView view, ShapeElement shape)
{ return shape.StyleSet.GetBrush(this.GetTextBrushId(view, shape)); }
// Brush ID selects a brush from a StyleSet.
// Either return a member of DiagramBrushes
// or add your own brush to the shape or application’s styleset.
// Override this to change dynamically or per instance.
// To change statically, just assign to default values.
public virtual StyleSetResourceId GetTextBrushId(DiagramClientView view, ShapeElement shape)
{ return IsSelected(view, shape) ? (view.Focused ? DefaultSelectedTextBrushId
: DefaultInactiveSelectedTextBrushId ) : DefaultTextBrushId ;
}
// Font determines the shape and size of the text.
// To change the font for every field, change the shape’s styleset.
// To customize to a font in the style set, override GetFontId.
// To change the font to a non-standard font, override this.
public virtual Font GetFont(ShapeElement shape)
{ return shape.StyleSet.GetFont(GetFontId(shape)); }
// Selects a font from a styleset.
// Either return a member of DiagramFonts or
// add your own font to the shape or application’s styleset.
// To change statically for all instances of this field,
// assign to DefaultFontId.
// To change per shape or dynamically, override this.
public virtual StyleSetResourceId GetFontId(ShapeElement parentShape)
{ return DefaultFontId; }
다른 쌍의 몇 가지 Get 메서드 및 Default 속성 같은 DefaultMultipleLine/GetMultipleLine(). Shape 필드의 모든 인스턴스에 대 한 값을 변경 하려면 기본 속성 값을 할당할 수 있습니다. 셰이프의 인스턴스에서 다른, 또는 셰이프 또는 해당 모델 요소의 상태에 따라 다양 한 값을 재정의 하 여 Get 메서드.
정적 사용자 지정
Shape 필드의 모든 인스턴스를 변경 하려면 DSL 정의에 속성을 설정할 수 있는지 여부에 대해 먼저 알아봅니다. 예를 들어, 속성 창에서 글꼴 크기와 스타일을 설정할 수 있습니다.
그렇지 않으면 다음 재정의 InitializeShapeFields shape 클래스에 적절 한 값을 지정 하는 방법 Default... 텍스트 필드의 속성입니다.
경고
재정의 하려면 InitializeShapeFields()를 설정 해야는 이중 파생 생성 shape 클래스의 속성 true DSL 정의에.
이 예제에서는 셰이프의 사용자 설명에 사용할 수 있는 텍스트 필드를 있습니다. 표준 주석 글꼴을 사용 하려고 합니다. 표준 글꼴 스타일 집합에서 이기 때문에 기본 글꼴 id를 설정할 수 있습니다.
partial class ExampleShape
{ protected override void InitializeShapeFields(IList<ShapeField> shapeFields)
{
// Fields set up according to DSL Definition:
base.InitializeShapeFields(shapeFields);
// Find and update comment field:
TextField commentField = ShapeElement.FindShapeField(shapeFields, "CommentDecorator") as TextField;
// Use the standard font for comments:
commentField.DefaultFontId = DiagramFonts.CommentText;
사용자 지정 동적
자체 서브 클래스의 파생 도형 또는 해당 모델 요소의 상태에 따라 달라 집니다 모양의 하려면 TextField 하나 이상을 무시 하 고 Get... 방법. 또한 모양을 InitializeShapeFields 메서드를 재정의 하 고 사용자 지정 클래스의 인스턴스를 사용 하 여 텍스트 필드의 인스턴스를 대체 해야 합니다.
다음 예제에서는 텍스트 필드의 글꼴 셰이프의 모델 요소의 부울 domain 속성의 상태에 따라 다릅니다.
이 예제 코드를 실행 하려면 최소한의 언어 서식 파일을 사용 하 여 새 DSL 솔루션을 만듭니다. 부울 도메인 속성 추가 AlternateState ExampleElement 도메인 클래스에 있습니다. 아이콘 데코레이터는 ExampleShape 클래스에 추가 하 고 비트맵 파일에 이미지를 설정 합니다. 모든 템플릿 변환을 클릭합니다. DSL 프로젝트의 새 코드 파일을 추가 하 고 다음 코드를 삽입 합니다.
코드를 테스트 하려면 F5 키를 눌러 및 디버깅 솔루션에서 샘플 다이어그램을 엽니다. 아이콘의 기본 상태가 표시 됩니다. 셰이프를 선택 하 고 속성 창에서 값을 변경 하면 AlternateState 속성입니다. 요소 이름의 글꼴을 변경 해야 합니다.
using Microsoft.VisualStudio.Modeling;
using Microsoft.VisualStudio.Modeling.Diagrams;
...
partial class ExampleShape
{
/// <summary>
/// Compose a list of the fields in this shape.
/// Called once for each shape class.
/// </summary>
protected override void InitializeShapeFields(IList<ShapeField> shapeFields)
{
// Fields set up according to DSL Definition:
base.InitializeShapeFields(shapeFields);
// Replace the text field for NameDecorator:
TextField oldField = ShapeElement.FindShapeField(shapeFields, "NameDecorator") as TextField;
shapeFields.Remove(oldField);
// Replace with my text field based on DSL Definition values:
MyTextField newField = new MyTextField(oldField);
shapeFields.Add(newField);
}
}
/// <summary>
/// Dynamic font depends on state of model element.
/// </summary>
public class MyTextField : TextField
{
public MyTextField(TextField prototype)
: base(prototype.Name)
{
DefaultText = prototype.DefaultText;
DefaultFocusable = prototype.DefaultFocusable;
DefaultAutoSize = prototype.DefaultAutoSize;
AnchoringBehavior.MinimumHeightInLines = prototype.AnchoringBehavior.MinimumHeightInLines;
AnchoringBehavior.MinimumWidthInCharacters = prototype.AnchoringBehavior.MinimumWidthInCharacters;
DefaultAccessibleState = prototype.DefaultAccessibleState;
}
public override System.Drawing.Font GetFont(ShapeElement parentShape)
{
// Access the Boolean domain property of the model element:
if ((parentShape.ModelElement as ExampleElement).AlternateState)
return new System.Drawing.Font("Callisto", 14.0f,
System.Drawing.FontStyle.Italic |
System.Drawing.FontStyle.Bold);
else
return base.GetFont(parentShape);
}
}
스타일 설정
앞의 예제에서는 텍스트 필드를 사용할 수 있는 글꼴을 변경 하는 방법을 보여 줍니다. 그러나 셰이프 또는 응용 프로그램과 연결 된 스타일 집합 중 하나를 변경 하는 것이 좋습니다 메서드는. 이렇게 하려면 재정의 GetFontId 또는 GetTextBrushId().
수도 스타일 집합을 변경 하면 셰이프를 재정의 하 여 InitializeResources. 이 글꼴 및 브러쉬 모양 필드에 대 한 변경의 효과 가집니다.
스레드로부터의 안전성
이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.