From a108fc2b9817b63116cfc26c0f5a58dcd4c1ac06 Mon Sep 17 00:00:00 2001 From: Andy De George <67293991+adegeo@users.noreply.github.com> Date: Fri, 13 Nov 2020 11:51:10 -0800 Subject: [PATCH] Fixes related to open issues. (#122) * Update framework winforms landing * Add note about attribute * Adjust storyboard overview * Fix comments in snippet * Adjust table in getting started * Add missing encoded char * Fix bad desiredheight prop * Fix blank column * Fix description metadata * Review feedback --- ...h-the-shouldserialize-and-reset-methods.md | 7 +++- .../framework/winforms/index.yml | 32 ++++++++++++++--- .../how-to-use-special-characters-in-xaml.md | 36 ++++++++++--------- .../storyboards-overview.md | 9 +++-- .../get-started/create-app-visual-studio.md | 36 ++++++++++--------- .../ScrollViewer/CPP/ScrollViewer_wcp.cpp | 4 +-- .../CS/resources/expander.xaml | 2 +- .../ScrollViewer/CSharp/ScrollViewer_wcp.cs | 4 +-- .../ScrollViewer/VisualBasic/ScrollViewer.vb | 4 ++- 9 files changed, 88 insertions(+), 46 deletions(-) diff --git a/dotnet-desktop-guide/framework/winforms/controls/defining-default-values-with-the-shouldserialize-and-reset-methods.md b/dotnet-desktop-guide/framework/winforms/controls/defining-default-values-with-the-shouldserialize-and-reset-methods.md index 5d4fa8c..2bd31b7 100644 --- a/dotnet-desktop-guide/framework/winforms/controls/defining-default-values-with-the-shouldserialize-and-reset-methods.md +++ b/dotnet-desktop-guide/framework/winforms/controls/defining-default-values-with-the-shouldserialize-and-reset-methods.md @@ -1,5 +1,6 @@ --- title: "Defining Default Values with the ShouldSerialize and Reset Methods" +description: "Learn how to use the ShouldSerialize and Reset property methods to control the Windows Forms designer behavior." ms.date: "03/30/2017" dev_langs: - "csharp" @@ -10,7 +11,7 @@ helpviewer_keywords: ms.assetid: 7b6c5e00-3771-46b4-9142-5a80d5864a5e --- # Defining Default Values with the ShouldSerialize and Reset Methods -`ShouldSerialize` and `Reset` are optional methods that you can provide for a property, if the property does not a have simple default value. If the property has a simple default value, you should apply the and supply the default value to the attribute class constructor instead. Either of these mechanisms enables the following features in the designer: +`ShouldSerialize` and `Reset` are optional methods that you can provide for a property, if the property does not have a simple default value. If the property has a simple default value, you should apply the and supply the default value to the attribute class constructor instead. Either of these mechanisms enables the following features in the designer: - The property provides visual indication in the property browser if it has been modified from its default value. @@ -56,6 +57,9 @@ public bool ShouldSerializeMyFont() { } ``` +> [!TIP] +> If you want to permanently prevent a property from being serialized by the designer, add the [DesignerSerializationVisibility](xref:System.ComponentModel.DesignerSerializationVisibilityAttribute) attribute with the value of `Hidden`. + A complete code example follows. ```vb @@ -141,3 +145,4 @@ public class MyControl : Control { - [Properties in Windows Forms Controls](properties-in-windows-forms-controls.md) - [Defining a Property](defining-a-property-in-windows-forms-controls.md) - [Property-Changed Events](property-changed-events.md) +- diff --git a/dotnet-desktop-guide/framework/winforms/index.yml b/dotnet-desktop-guide/framework/winforms/index.yml index 06c1684..a22ee54 100644 --- a/dotnet-desktop-guide/framework/winforms/index.yml +++ b/dotnet-desktop-guide/framework/winforms/index.yml @@ -1,11 +1,11 @@ ### YamlMime:Landing title: .NET Desktop Guide for Windows Forms -summary: Learn about using Windows Forms on Windows with either .NET Framework, .NET 5 and above, or .NET Core 3.1. +summary: Learn about Windows Forms (WinForms), a graphical user interface for Windows and .NET Framework. metadata: title: Windows Forms for .NET documentation - description: Learn about using Windows Forms (WinForms), a graphical user interface for Windows and .NET. + description: Learn about Windows Forms (WinForms), a graphical user interface for Windows and .NET Framework. ms.topic: landing-page ms.date: 08/30/2020 @@ -27,7 +27,7 @@ landingContent: url: /visualstudio/designers/walkthrough-windows-forms-designer - text: Create a WinForms app from the command-line url: how-to-create-a-windows-forms-application-from-the-command-line.md - + - title: Controls linkLists: - linkListType: overview @@ -59,4 +59,28 @@ landingContent: links: - text: Order in which events are raised url: order-of-events-in-windows-forms.md - \ No newline at end of file + + - title: Input + linkLists: + - linkListType: overview + links: + - text: About keyboard input + url: how-keyboard-input-works.md + - text: About mouse input + url: how-mouse-input-works-in-windows-forms.md + - linkListType: concept + links: + - text: Keyboard events + url: using-keyboard-events.md + - text: Mouse events + url: mouse-events-in-windows-forms.md + - text: Mouse pointers + url: mouse-pointers-in-windows-forms.md + - linkListType: how-to-guide + links: + - text: Modify keyboard input + url: how-to-modify-keyboard-input-to-a-standard-control.md + - text: Detect modifier keyboard keys + url: how-to-determine-which-modifier-key-was-pressed.md + - text: Distinguish between single/double clicks + url: how-to-distinguish-between-clicks-and-double-clicks.md diff --git a/dotnet-desktop-guide/framework/wpf/advanced/how-to-use-special-characters-in-xaml.md b/dotnet-desktop-guide/framework/wpf/advanced/how-to-use-special-characters-in-xaml.md index 4d605f8..0b743a2 100644 --- a/dotnet-desktop-guide/framework/wpf/advanced/how-to-use-special-characters-in-xaml.md +++ b/dotnet-desktop-guide/framework/wpf/advanced/how-to-use-special-characters-in-xaml.md @@ -11,21 +11,23 @@ helpviewer_keywords: ms.assetid: a57776d1-f353-4794-afa0-bfa3c712ed1c --- # How to: Use Special Characters in XAML -Markup files that are created in Visual Studio are automatically saved in the Unicode UTF-8 file format, which means that most special characters, such as accent marks, are encoded correctly. However, there is a set of commonly-used special characters that are handled differently. These special characters follow the World Wide Web Consortium (W3C) XML standard for encoding. - - The following table shows the syntax for encoding this set of special characters: - -|Character|Syntax|Description| -|---------------|------------|-----------------| -|<|`<`|Less than symbol.| -|>|`>`|Greater than sign.| -|&|`&`|Ampersand symbol.| -|"|`"`|Double quote symbol.| - +Markup files that are created in Visual Studio are automatically saved in the Unicode UTF-8 file format, which means that most special characters, such as accent marks, are encoded correctly. However, there is a set of commonly-used special characters that are handled differently. These special characters follow the World [Wide Web Consortium (W3C) XML standard for encoding](https://www.w3resource.com/xml/reserved-markup-characters.php). + +The following table shows the syntax for encoding this set of special characters: + +| Character | Syntax | Description | +|-----------|----------|----------------------| +| `<` | `<` | Less than symbol. | +| `>` | `>` | Greater than sign. | +| `&` | `&` | Ampersand symbol. | +| `"` | `"` | Double quote symbol. | +| `'` | `'` | Single quote symbol. | + > [!NOTE] -> If you create a markup file using a text editor, such as Windows Notepad, you must save the file in the Unicode UTF-8 file format in order to preserve any encoded special characters. - - The following example shows how you can use special characters in text when creating markup. - -## Example - [!code-xaml[SpecialCharsSnippets#SpecialCharsSnippet1](~/samples/snippets/csharp/VS_Snippets_Wpf/SpecialCharsSnippets/CS/Window1.xaml#specialcharssnippet1)] +> If you create a markup file using a text editor, such as Windows Notepad, you must save the file in the Unicode UTF-8 file format in order to preserve any encoded special characters. + +The following example shows how you can use special characters in text when creating markup. + +## Example + +[!code-xaml[SpecialCharsSnippets#SpecialCharsSnippet1](~/samples/snippets/csharp/VS_Snippets_Wpf/SpecialCharsSnippets/CS/Window1.xaml#specialcharssnippet1)] diff --git a/dotnet-desktop-guide/framework/wpf/graphics-multimedia/storyboards-overview.md b/dotnet-desktop-guide/framework/wpf/graphics-multimedia/storyboards-overview.md index c92da92..3a98424 100644 --- a/dotnet-desktop-guide/framework/wpf/graphics-multimedia/storyboards-overview.md +++ b/dotnet-desktop-guide/framework/wpf/graphics-multimedia/storyboards-overview.md @@ -1,6 +1,6 @@ --- title: "Storyboards Overview" -desription: Organize and apply animations in storyboards. Use property-targeting syntax and combine timelines in Windows Presentation Foundation (WPF). +description: Organize and apply animations in storyboards. Use property-targeting syntax and combine timelines in Windows Presentation Foundation (WPF). ms.date: "03/30/2017" dev_langs: - "csharp" @@ -65,7 +65,9 @@ The following table shows the different places where each and an |Yes|Yes|Yes|Yes|[Animate a Property by Using a Storyboard](how-to-animate-a-property-by-using-a-storyboard.md)| | and a property |No|Yes|Yes|Yes|[Trigger an Animation When a Property Value Changes](how-to-trigger-an-animation-when-a-property-value-changes.md)| +| and a property |No|Yes|Yes|Yes|[MultiTrigger class example](/dotnet/api/system.windows.multitrigger#examples)| | and a |No|Yes|Yes|Yes|[How to: Trigger an Animation When Data Changes](/previous-versions/dotnet/netframework-3.5/aa970679(v=vs.90))| +| and a |No|Yes|Yes|Yes|[MultiDataTrigger class example](/dotnet/api/system.windows.multidatatrigger#examples)| | method|Yes|No|No|No|[Animate a Property by Using a Storyboard](how-to-animate-a-property-by-using-a-storyboard.md)| The following example uses a to animate the of a element and the of a used to paint that . @@ -80,7 +82,10 @@ The following sections describe the with the name of the property to animate. You specify the name of the object whose property you want to animate by setting the property on the animation. +The previous section mentioned that, for an animation to find its target, it must know the target's name and the property to animate. Specifying the property to animate is straight forward: simply set `TargetProperty` with the name of the property to animate. You specify the name of the object whose property you want to animate by setting the property on the animation. + +> [!CAUTION] +> While you can use the `Target` property to bind directly to an object as an alternative to `TargetName`, it isn't serializable. There is no guaranteed that the `Target` object can be correctly referenced in XAML. For the property to work, the targeted object must have a name. Assigning a name to a or a in [!INCLUDE[TLA2#tla_xaml](../../../includes/tla2sharptla-xaml-md.md)] is different than assigning a name to a object. diff --git a/dotnet-desktop-guide/net/winforms/get-started/create-app-visual-studio.md b/dotnet-desktop-guide/net/winforms/get-started/create-app-visual-studio.md index 30ba752..8bad6bf 100644 --- a/dotnet-desktop-guide/net/winforms/get-started/create-app-visual-studio.md +++ b/dotnet-desktop-guide/net/winforms/get-started/create-app-visual-studio.md @@ -88,22 +88,26 @@ With the _Form1_ form designer open, use the **Toolbox** pane to add the followi You can position and size the controls according to the following settings. Either visually move them to match the screenshot that follows, or click on each control and configure the settings in the **Properties** pane. You can also click on the form title area to select the form: -| Object | Setting | Value | -|---------|----------|------------| -| Form | Text | `Names` | -| | Size | `268, 180` | -| Label | Location | `12, 9` | -| | Text | `Names` | -| Listbox | Name | `lstNames` | -| | Location | `12, 27` | -| | Size | `120, 94` | -| Textbox | Name | `txtName` | -| | Location | `138, 26` | -| | Size | `100, 23` | -| Button | Name | `btnAdd` | -| | Location | `138, 55` | -| | Size | `100, 23` | -| | Text | `Add Name` | +| Object | Setting | Value | +|-------------|----------|------------| +| **Form** | Text | `Names` | +| | Size | `268, 180` | +| | | | +| **Label** | Location | `12, 9` | +| | Text | `Names` | +| | | | +| **Listbox** | Name | `lstNames` | +| | Location | `12, 27` | +| | Size | `120, 94` | +| | | | +| **Textbox** | Name | `txtName` | +| | Location | `138, 26` | +| | Size | `100, 23` | +| | | | +| **Button** | Name | `btnAdd` | +| | Location | `138, 55` | +| | Size | `100, 23` | +| | Text | `Add Name` | You should have a form in the designer that looks similar to the following: diff --git a/dotnet-desktop-guide/samples/snippets/cpp/VS_Snippets_Wpf/ScrollViewer/CPP/ScrollViewer_wcp.cpp b/dotnet-desktop-guide/samples/snippets/cpp/VS_Snippets_Wpf/ScrollViewer/CPP/ScrollViewer_wcp.cpp index 8739a01..bf507aa 100644 --- a/dotnet-desktop-guide/samples/snippets/cpp/VS_Snippets_Wpf/ScrollViewer/CPP/ScrollViewer_wcp.cpp +++ b/dotnet-desktop-guide/samples/snippets/cpp/VS_Snippets_Wpf/ScrollViewer/CPP/ScrollViewer_wcp.cpp @@ -55,10 +55,10 @@ namespace SDKSample { myStackPanel->Children->Add(myTextBlock); myStackPanel->Children->Add(myRectangle); - // Add the StackPanel as the lone Child of the Border + // Add the StackPanel as the lone child of the ScrollViewer myScrollViewer->Content = myStackPanel; - // Add the Border as the Content of the Parent Window Object + // Add the ScrollViewer as the Content of the parent Window object mainWindow->Content = myScrollViewer; mainWindow->Show(); diff --git a/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Wpf/ControlTemplateExamples/CS/resources/expander.xaml b/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Wpf/ControlTemplateExamples/CS/resources/expander.xaml index e540e9e..28b059e 100644 --- a/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Wpf/ControlTemplateExamples/CS/resources/expander.xaml +++ b/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Wpf/ControlTemplateExamples/CS/resources/expander.xaml @@ -220,7 +220,7 @@ Value="True"> + Value="{Binding Height, ElementName=Content}" /> diff --git a/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Wpf/ScrollViewer/CSharp/ScrollViewer_wcp.cs b/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Wpf/ScrollViewer/CSharp/ScrollViewer_wcp.cs index 37a224c..e070a26 100644 --- a/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Wpf/ScrollViewer/CSharp/ScrollViewer_wcp.cs +++ b/dotnet-desktop-guide/samples/snippets/csharp/VS_Snippets_Wpf/ScrollViewer/CSharp/ScrollViewer_wcp.cs @@ -49,10 +49,10 @@ namespace SDKSample myStackPanel.Children.Add(myTextBlock); myStackPanel.Children.Add(myRectangle); - // Add the StackPanel as the lone Child of the Border + // Add the StackPanel as the lone child of the ScrollViewer myScrollViewer.Content = myStackPanel; - // Add the Border as the Content of the Parent Window Object + // Add the ScrollViewer as the Content of the parent Window object mainWindow.Content = myScrollViewer; mainWindow.Show (); diff --git a/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Wpf/ScrollViewer/VisualBasic/ScrollViewer.vb b/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Wpf/ScrollViewer/VisualBasic/ScrollViewer.vb index c68aa21..cba8b7e 100644 --- a/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Wpf/ScrollViewer/VisualBasic/ScrollViewer.vb +++ b/dotnet-desktop-guide/samples/snippets/visualbasic/VS_Snippets_Wpf/ScrollViewer/VisualBasic/ScrollViewer.vb @@ -38,8 +38,10 @@ Namespace SDKSample myStackPanel.Children.Add(myTextBlock) myStackPanel.Children.Add(myRectangle) - 'Add the StackPanel as the lone Child of the Border + 'Add the StackPanel as the lone child of the ScrollViewer myScrollViewer.Content = myStackPanel + + 'Add the ScrollViewer as the Content of the parent Window object Me.Content = myScrollViewer ' End Sub