Skip to content

WinForms for .NET 5+ Planning #72

Open
@Thraka

Description

@Thraka

Planning content for Desktop Guide - WinForms portion.

Update We should redesign this plan like the WPF plan was designed: evaluate each article in the .NET Framework for value, and redesign the TOC below to include each new article specifically.


The current overall plan is to:

  • Copy the existing winforms documentation for .NET 5
  • Sanitize content for .NET Framework terminology.
  • Trim out articles that don't add value (small articles that are not critical to the story and are easily answered with a stackoverflow question).

Content plan items

.NET Framework 4 TOC and my notes

- Windows Forms
  - Getting Started with Windows Forms
  - Windows Forms Overview                                                        (keep)
  - Creating a New Windows Form
    - How to: Create a Windows Forms Application from the Command Line            (keep; rewrite to visual studio-based
    - Windows Forms Coordinates                                                   (low; small)
  - Creating Event Handlers in Windows Forms                                      > I suggest this split and tuned to both FORMS and CONTROLS. Those are the winforms specific things that have events. No need for a generic overview
    - Events Overview                                                             (low;)
    - Event Handlers Overview                                                     (low; small; merge with events overview)
    - How to: Create Event Handlers at Run Time for Windows Forms                 (med; google search items suggest ppl looking for generic C# events; also, doesn't really do "run time" events; Improve with VS)
    - How to: Connect Multiple Events to a Single Event Handler in Windows Forms  (low; odd. vb is demonstrated in code, C# in VS steps. is it useful? delete)
    - Order of Events in Windows Forms                                            (important; break up and put in forms overview (or events info) and controls overview (or events info))
  - Adjusting the Size and Scale of Windows Forms
    - How to: Resize Windows Forms"                                               (keep)
    - Automatic Scaling in Windows Forms                                          (keep)
      - How to: Respond to Font Scheme Changes in a Windows Forms Application     (low;keep)
    - High DPI Support In Windows Forms                                           (med;keep)
  - Changing the Appearance of Windows Forms
    - How to: Change the Borders of Windows Forms                                 (low;delete or keep)
  - Windows Forms Controls
    - Arrange controls on Windows Forms                                           \
      - How to: Align Multiple Controls                                           |  ALL ITEMS IN THIS GROUPED BLOCK
      - How to: Anchor Controls                                                   |  ========================================================================= 
      - How to: Dock Controls                                                     |  Some tasks are VS designer related. some are code related;
      - How to: Layer Objects                                                     |  needs more diagrams and placed in a How to use VS with WinForms section
      - How to: Lock Controls                                                     |  Port how to where it makes sense
      - How to: Position Controls                                                 |
      - How to: Resize Controls                                                   |
      - How to: Set Grid Options for All Windows Forms                            |
      - How to: Reassign Existing Controls to a Different Parent                  |
      - How to: Set the Tab Order                                                 |
      - Walkthrough: Arrange Controls Using Snaplines                             (Odd that it's a walkthrough; this info should be ported to a generic layout article)
      - Walkthrough: Laying Out Windows Forms Controls with Padding, Mar...       (Port to a generic layout overview article)
    - Putting Controls on Windows Forms                                           |
      - How to: Add Controls                                                      |
      - How to: Add Controls Without a User Interface                             |
      - How to: Add to or Remove from a Collection of Controls at Run Time        |
      - Walkthrough: Automatically Populating the Toolbox with Custom Components  |
      - How to: Add ActiveX Controls                                              |
      - Considerations When Hosting an ActiveX Control on a Windows Form          /
    - Label controls and provide shortcuts                                        
      - Overview                                                                  (delete; not an overview, just header links)
      - Create access keys for controls                                           (important; ported)
      - Set the text displayed by a control                                       (low; not really useful)
      - Set the image displayed by a control                                      (low; not really useful)
      - Provide accessibility information for controls                            (important; ported)
    - Controls to use on Windows Forms 
      - ....                                                                      \
      - ....                                                                      | Almost 500 articles breaking down individual controls with overviews
      - ....                                                                      | and how to articles.
      - ....                                                                      |
      - ....                                                                      | Some of the higher level articles should be ported as reference material
      - ....                                                                      | such as what controls are available and what they do.
      - ....                                                                      | 
      - ....                                                                      | Import these into the TOC. Scrub the articles for Framework.
      - ....                                                                      /
    - Developing Custom Windows Forms Controls with the .NET Framework
      - Overview of Using Controls in Windows Forms                               (delete; basic overview of adding buttons??)
      - Varieties of Custom Controls                                              (low; merge below article into same "Types of Custom Controls" article)
        - Control Type Recommendations                                            (low; merge above article into same "Types of Custom Controls" article)
      - Windows Forms Control Development Basics                                  (low; merge into the new "Types of Custom Controls" article or an overview article)
        - How to: Develop a Simple Windows Forms Control                          (low; important; clean up)
        - How to: Create a Windows Forms Control That Shows Progress              (low; would make good tutorial)
        - Developing a Composite Windows Forms Control                            (delete; link farm)
      - Properties in Windows Forms Controls
        - Defining a Property                                                     (low; important; designer related; could be rolled into something else)
        - Defining Default Values with the ShouldSerialize and Reset Methods      (low; important; designer related; could be rolled into something else)
        - Property-Changed Events                                                 (low; generic guidance on .NET property change handler; move to design guide for WinForms)
        - How to: Expose Properties of Constituent Controls                       (low; generic guidance on .NET property forwarding; delete?)
        - Method Implementation in Custom Controls                                (low; generic guidance on .NET creating a method; delete?)
      - Events in Windows Forms Controls
        - Overriding the OnPaint Method                                           (med; mix of generic OnEventName guidance and OnPaint; roll into something else)
        - Handling User Input                                                     (low; important; events list related to input)
        - Defining an Event                                                       (low; generic guidance on .NET event design implementation; move to design guide for WinForms?)
      - Attributes in Windows Forms Controls                                      (low; designer related; move to design guide for WinForms)
        - How to: Apply Attributes in Windows Forms Controls                      (low; semi-designer data-binding related; unsure)
      - Custom Control Painting and Rendering
        - Rendering a Windows Forms Control                                       (low; important; basic overview)
        - User-Drawn Controls                                                     (low; important)
        - Constituent Controls                                                    (low; small; roll into other article)
        - How to: Make Your Control Invisible at Run Time                         (low; small; it's show/hide a control)
        - How to: Give Your Control a Transparent Background                      (low; small; more popular than other article; it's a tip/trick too)
        - Rendering Controls with Visual Styles                                   (low; overview; is it still important? talks about "in .net 2.0 we introduced...")
          - How to: Use a Control Rendering Class                                 (low; briefly shows how to use ControlPaint class and detect if visual styles is on; roll  into other?)
          - How to: Render a Visual Style Element                                 (low; Unsure what it does. Never heard of this stuff before. Not in my books either)
      - Layout in Windows Forms Controls
        - AutoSize Property Overview                                              (low; important)
        - How to: Align a Control to the Edges of Forms                           (low; too small; roll or delete)
        - Margin and Padding in Windows Forms Controls                            (low; important; more examples needed; more info needed (the designer takes these into account, does autosizing and layout?); maybe roll into general layout article?)
        - How to: Create a Border Around a Windows Forms Control Using Padding    (low; too small; delete)
        - How to: Implement a Custom Layout Engine                                (dead; interesting; roll into a conceptual perhaps?)
      - Multithreading in Windows Forms Controls
        - How to: Make Thread-Safe Calls to Windows Forms Controls                (high; important)
        - How to: Use a Background Thread to Search for Files                     (low; important info should be ported into general multithreading overview; delete)
    - Windows Forms Controls in the .NET Framework by Function                    (med; useful)
    - Develop Controls at Design Time
      - Overview                                                                  > (This whole section has a lot of great content. Walkthroughs are short, perhaps turn them into a full user control tutorial?)
      - Walkthrough: Author a Composite Control                                   (low; important; feedback on article states "Add VB" and "Better example of a real composite control (forward events etc)")
      - Walkthrough: Inherit from a Control                                       (low; doesn't detail anything special; delete)
      - Walkthrough: Perform Common Tasks Using Design Actions                    (dead; delete/rewrite; describes the > icon actions in the designer, not how to creat them!)
      - Walkthrough: Serialize Collections of Standard Types                      (dead; important; roll into something; useful information)
      - Walkthrough: Debug Custom Controls                                        (low; important; needs clarification, less sections)
      - Walkthrough: Create a Control That Takes Advantage of Design-Time Features (med; important; needs clean up; demos two controls. Turn into tutorial)
      - How to: Author Controls                                                   (dead; move into overview; nothing to do with design-time)
      - How to: Author Composite Controls                                         (dead; not much info; delete/roll into tutorial)
      - How to: Inherit from the UserControl Class                                (low; less info than "composite controls" describes same thing better keyword though; delete)
      - How to: Inherit from Existing Controls                                    (med; important; improve with better examples and keywords)
      - How to: Inherit from the Control Class                                    (low; important; improve with better examples and keywords)
      - How to: Align a Control to the Edges of Forms                             (dead; delete)
      - How to: Display a Control in Choose Toolbox Items                         (low; describes registering with GAC; how does this work in .NET 5+???)
      - How to: Provide a Toolbox Bitmap for a Control                            (low; important to the designer)
      - How to: Test the Run-Time Behavior of a UserControl                       (delete; doesn't work in .NET 5)
      - Design-Time Errors in the Windows Forms Designer                          (high; important; needs clean up, better keywords, maybe a whole reference section in the TOC related to these errors? lots of neg feedback)
      - Troubleshoot Control and Component Authoring                              (dead; delete)
  - User Input in Windows Forms
    - User Input in a Windows Forms Application                                   (low;tiny;roll into both mouse/keyboard overviews)
    - Keyboard Input in a Windows Forms Application
      - How Keyboard Input Works                                                  (low;important;is overview)
      - Using Keyboard Events                                                     (low;important;roll into overview)
      - How to: Modify Keyboard Input to a Standard Control                       (low;important;bounce
      - How to: Determine Which Modifier Key Was Pressed                          (low;important;bounce
      - How to: Handle Keyboard Input at the Form Level                           (low;important
    - Mouse Input in a Windows Forms Application
      - How Mouse Input Works in Windows Forms                                    (low;important)
      - Mouse Events in Windows Forms                                             (low;important)
      - How to: Distinguish Between Clicks and Double-Clicks                      (low
      - Mouse Pointers in Windows Forms                                           (low;important;roll into overview)
      - Mouse Capture in Windows Forms                                            (low;important;roll into overview)
      - Drag-and-Drop Functionality in Windows Forms                              (low;important;roll into how to or overview)
    - How to: Simulate Mouse and Keyboard Events in Code                          (med;keep and update
    - How to: Handle User Input Events in Windows Forms Controls                  (low;delete;it's a single paragraph with a whole app in one file. Odd
    - User Input Validation in Windows Forms                                      (low;important)
  - Dialog Boxes in Windows Forms
    - How to: Display Dialog Boxes for Windows Forms                              (med;small;roll into general display windows article
  - Windows Forms Data Binding                                                    
    - Data Binding and Windows Forms                                              (high;low ratings;merge into single overview)
    - Data Sources Supported by Windows Forms                                     (high;low ratings;merge into single overview)
    - Interfaces Related to Data Binding                                          (low; important)
    - Change Notification in Windows Forms Data Binding                           (low; important; should be rolled into something else though)
    - How to: Apply the PropertyNameChanged Pattern                               (low; important; small, rolled into bigger)
    - How to: Create a Bound Control and Format the Displayed Data                (low; important; should be rewritten with better example)
    - How to: Create a Simple-Bound Control on a Windows Form                     (low; important; should be rewritten with better example)
    - How to: Ensure Multiple Controls Bound to the Same Data Source Remain Synchronized  (low; important; needs improvement and more details)
    - How to: Ensure the Selected Row in a Child Table Remains at the Correct Position    (low; important)
    - How to: Implement the IListSource Interface                                 (low; delete)
    - How to: Implement the INotifyPropertyChanged Interface                      (med; important)
    - How to: Implement the ITypedList Interface                                  (low; delete)
    - How to: Navigate Data in Windows Forms                                      (med; improve into tutorial)
  - Windows Forms Security
    - Security in Windows Forms Overview                                          (review; CAS doesn't apply anymore)
    - More Secure File and Data Access in Windows Forms                           (low; important; some stuff doesn't apply; move elsewhere)
    - More Secure Printing in Windows Forms                                       (delete; not apply)
    - Additional Security Considerations in Windows Forms                         (delete; not apply)
  - ClickOnce Deployment for Windows Forms                                        (migrate; link farm for VS docs)
  - Accessibility improvements with .NET Core 3.0                                 (move)
  - How to: Access Keyed Collections in Windows Forms                             (low; delete
  - Enhancing Windows Forms Applications                                          
    - Graphics and Drawing in Windows Forms
      - ....                                                                      \
      - ....                                                                      | 
      - ....                                                                      | A lot of content here. Well written and important.
      - ....                                                                      | Do the same as the Controls Overview section and cross link it to the TOC
      - ....                                                                      | 
      - ....                                                                      /
    - Application Settings for Windows Forms                                      (a lot of this stuff is covered in visual studio docs. what should we cover?)
      - Application Settings Overview                                             (med; important)
      - Application Settings Architecture                                         (low; important)
      - Application Settings Attributes                                           (low; important)
      - Application Settings for Custom Controls                                  (low; important)
      - Using Application Settings and User Settings
        - How To: Create a New Setting at Design Time                             (med; important; improve)
        - How To: Change the Value of an Existing Setting at Design Time          (med; important; improve)
        - How To: Change the Value of a Setting Between Application Sessions      (med; important; improve)
        - How To: Read Settings at Run Time With C#                               (high; important; improve; verbatim (1))
        - How To: Write User Settings at Run Time with C#                         (high; important; improve)
        - How To: Add Multiple Sets of Settings To Your Application in C#         (low; important; improve)
      - How to: Create Application Settings                                       (low; important)
      - How to: Validate Application Settings                                     (low; important)
  - Windows Forms Print Support
    - How to: Create Standard Windows Forms Print Jobs                            (dead; important)
    - How to: Capture User Input from a PrintDialog at Run Time                   (dead; important)
    - How to: Choose the Printers Attached to a User's Computer in Windows Forms  (low; delete)
    - How to: Print Graphics in Windows Forms                                     (low; important)
    - How to: Print a Multi-Page Text File in Windows Forms                       (low; important)
    - How to: Complete Windows Forms Print Jobs                                   (dead; small; move into something else)
    - How to: Print a Windows Form                                                (med; good page views, should keep)
    - How to: Print in Windows Forms Using Print Preview                          (med; restructure this)
  - Drag-and-Drop Operations and Clipboard Support                                
    - Walkthrough: Performing a Drag-and-Drop Operation in Windows Forms          (high; important)
    - How to: Perform Drag-and-Drop Operations Between Applications               (low; important)
    - How to: Add Data to the Clipboard                                           (low; important)
    - How to: Retrieve Data from the Clipboard                                    (med; important)
  - Networking in Windows Forms Applications                                      (dead; link farm; delete)
  - Globalizing Windows Forms
    - International Fonts in Windows Forms and Controls                           (dead; important)
    - Bi-Directional Support for Windows Forms Applications                       (dead; important)
    - Display of Asian Characters with the ImeMode Property                       (dead; small; roll into something else)
  - Windows Forms and Unmanaged Applications
    - Windows Forms and Unmanaged Applications Overview                                   (dead; review; what is relevant?)
    - How to: Support COM Interop by Displaying Each Windows Form on Its Own Thread       (dead; review; what is relevant?)
    - How to: Support COM Interop by Displaying a Windows Form with the ShowDialog Method (dead; review; what is relevant?)
  - System Information and Windows Forms                                          (dead; small)
  - Power Management in Windows Forms                                             (dead; important; update with more info)
  - Help Systems in Windows Forms Applications                                    (dead; HTML help is mostly dead on windows? What replaces it?)
  - Windows Forms Visual Inheritance                                              (Create new section under forms that relates to this content)
    - How to: Inherit Windows Forms                                               (med; small; )
    - How to: Inherit Forms Using the Inheritance Picker Dialog Box               (low; small; visual studio related)
    - Effects of Modifying a Base Form's Appearance                               (dead; delete)
    - Walkthrough: Demonstrating Visual Inheritance                               (low; delete)
    - How to: Use the Modifiers and GenerateMember Properties                     (low; important with )

  - Multiple-Document Interface (MDI) Applications
    - How to: Create MDI Parent Forms                                             (med; important)
    - How to: Create MDI Child Forms                                              (high; important)
    - How to: Determine the Active MDI Child                                      (low; important)
    - How to: Send Data to the Active MDI Child                                   (low; important)
    - How to: Arrange MDI Child Forms                                             (low; )
  - Integrating User Help in Windows Forms
    - How to: Provide Help in a Windows Application                               (low; important but unsure if HELP 1.0 is still supported??)
    - How to: Display Pop-up Help                                                 (low; important)
    - Control Help Using ToolTips                                                 (dead; important)
  - Windows Forms Accessibility
    - Walkthrough: Creating an Accessible Windows-based Application               (dead; important)
    - Properties on Windows Forms Controls That Support Accessibility Guidelines  (dead; important)
  - Using WPF Controls                                                            (rewrite this whole section. Focus on XAML islands Win10+WPF?)
    - How to: Copy and Paste an ElementHost Control at Design Time                (dead; delete)
    - Walkthrough: Arranging WPF Content on Windows Forms at Design Time          (dead; delete)
    - Walkthrough: Creating New WPF Content on Windows Forms at Design Time       (med; improve)
    - Walkthrough: Assigning WPF Content on Windows Forms at Design Time          (dead; delete)
    - Walkthrough: Styling WPF Content                                            (dead; rewrite/roll; Interesting as it describes editing the XAML in the control host)

(1)
I think you have omitted how settings get implemented.   The configuration is saved to a Settings.settings file.   Access the setting properties via the Settings.cs file. Any best practice suggestions? Also the documentation -- at least how it links from Google -- appears to confuse Runsettings with Settings.    Also it might be useful to explain the difference in use between the Settings file/objects and the Application Configuration File.  When should I use the Settings vs. App.config?

</details>

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions