Menus & Dialogs 📋

From Zero to Hero - Master Every Dialog!

Beginner Friendly 35 min read Lesson 4 of 7

Welcome to the Menus & Dialogs Master Class! 🎯

In this lesson, you'll learn EVERYTHING about Menus and Dialogs - from finding them in the toolbox to using them like a pro!

By the end of this lesson, you'll be able to:
  • ✅ Find and add MenuStrip from the Toolbox
  • ✅ Create professional menus with shortcuts (Ctrl+S, Ctrl+O)
  • ✅ Use OpenFileDialog - step by step
  • ✅ Use SaveFileDialog - step by step
  • ✅ Use PrintDialog - step by step
  • ✅ Use ColorDialog - step by step
  • ✅ Use FontDialog - step by step
  • ✅ Use FolderBrowserDialog - step by step
  • ✅ Create custom dialogs (About, Settings)
  • ✅ Build a complete text editor with ALL dialogs!
Important: I'll show you EXACTLY where to find each dialog in the Toolbox and EXACTLY where to put your code. Follow along step by step!

Step 1: Adding a MenuStrip

What is a MenuStrip? It's the bar at the top of your app with File, Edit, Help, etc.
🔍 How to Find It
  1. Open your form in the Designer (the visual editor)
  2. Look on the left side for the Toolbox tab
  3. If you don't see it, click View → Toolbox or press Ctrl + Alt + X
  4. In the Toolbox, find the "Menus & Toolbars" section
  5. You'll see MenuStrip - that's what you need!
Found it? Now drag MenuStrip onto your form!
📝 Creating Your First Menu

After dragging MenuStrip, you'll see "Type Here" boxes:

  1. Click the first "Type Here" and type &File
  2. Click the next "Type Here" and type &Edit
  3. Click the next "Type Here" and type &Help
  4. Now click below "File" and type &New
  5. Press Enter, type &Open
  6. Press Enter, type &Save
  7. Press Enter, type - (this creates a separator line)
  8. Press Enter, type E&xit
Pro Tip: The & creates an access key (Alt+F for File, Alt+E for Edit). The letter after & is underlined and can be pressed with Alt.
😂 Fun Fact: The & is called an "ampersand" - it's been used in menus since the 1980s! It's the old-school way to add keyboard shortcuts!

Step 2: Adding Keyboard Shortcuts

What are Shortcuts? Keyboard combinations like Ctrl+S, Ctrl+O that users love!
📝 How to Add Shortcuts
  1. Click on a menu item (like New under File)
  2. Look at the Properties window (usually bottom-right)
  3. Find the ShortcutKeys property
  4. Click the dropdown and select Ctrl + N
  5. Do the same for other items:
    • Open → Ctrl + O
    • Save → Ctrl + S
    • Exit → Alt + F4
Result: Users can now press Ctrl+N, Ctrl+O, Ctrl+S!
💻 Complete Menu Code

When you're done, your menu structure looks like this:

// Menu structure in Designer
File
    ├── New        (Ctrl+N)
    ├── Open       (Ctrl+O)
    ├── Save       (Ctrl+S)
    ├── ─────────  (Separator)
    └── Exit       (Alt+F4)

Edit
    ├── Undo       (Ctrl+Z)
    ├── Redo       (Ctrl+Y)
    ├── ─────────
    ├── Cut        (Ctrl+X)
    ├── Copy       (Ctrl+C)
    └── Paste      (Ctrl+V)

Help
    └── About      (Alt+H, A)

📌 Every professional app has these menus!

😂 Joke: Why did the developer use Ctrl+S so much? Because they had short-term memory loss! (We all do it - save often!)

Step 3: OpenFileDialog - From Zero to Hero

What is OpenFileDialog? It lets users choose a file to open. You'll use this in EVERY application!
🔍 Where to Find OpenFileDialog
  1. Open the Toolbox (View → Toolbox or Ctrl+Alt+X)
  2. Find the "Dialogs" section (scroll down if needed)
  3. You'll see OpenFileDialog - it looks like a folder icon
  4. Important: Unlike buttons, you DON'T drag this to the form!
  5. Instead: Drag it to the component tray - the gray area below your form
  6. It will appear as a small icon below the form
Common Mistake: Many beginners try to drag dialogs onto the form. They go in the COMPONENT TRAY (the gray area below the form)!
💻 How to Use OpenFileDialog

Step 1: Double-click the "Open" menu item to create the click event

Step 2: Write this code:

// ===== OPEN FILE DIALOG - COMPLETE GUIDE =====
// This code goes in your Form.cs file

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 📌 STEP 1: Create a new OpenFileDialog
    // This creates the dialog object in memory
    using (OpenFileDialog openFileDialog = new OpenFileDialog())
    {
        // 📌 STEP 2: Configure the dialog
        // These settings control what the user sees
        
        // 👉 Title: What shows at the top of the dialog
        openFileDialog.Title = "Select a file to open";
        
        // 👉 Filter: What file types to show
        // Format: "Description|*.extension|Description2|*.ext2"
        openFileDialog.Filter = "Text Files (*.txt)|*.txt|" +
                               "All Files (*.*)|*.*";
        
        // 👉 FilterIndex: Which filter is selected by default (1-based)
        openFileDialog.FilterIndex = 1;  // Shows "Text Files" first
        
        // 👉 RestoreDirectory: Remember the last folder the user was in
        openFileDialog.RestoreDirectory = true;
        
        // 👉 Multiselect: Allow user to select multiple files
        openFileDialog.Multiselect = false;  // Only one file at a time
        
        // 👉 InitialDirectory: Where to start looking
        openFileDialog.InitialDirectory = Environment.GetFolderPath(
            Environment.SpecialFolder.MyDocuments);
        
        // 📌 STEP 3: Show the dialog and check result
        // ShowDialog() shows the window and waits for user action
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            // 🎉 User clicked "Open" - now do something with the file
            
            // 👉 Get the selected file path
            string filePath = openFileDialog.FileName;
            
            // 👉 Get just the file name (without the path)
            string fileName = Path.GetFileName(filePath);
            
            // 👉 Read the file content
            try
            {
                string content = File.ReadAllText(filePath);
                
                // 👉 Display the content in your textbox
                txtContent.Text = content;
                
                // 👉 Update status
                lblStatus.Text = $"📂 Loaded: {fileName}";
                lblStatus.ForeColor = Color.Green;
            }
            catch (Exception ex)
            {
                // 😱 Something went wrong - show error message
                MessageBox.Show($"Error: {ex.Message}", "Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        else
        {
            // 🚫 User clicked "Cancel" - do nothing
            lblStatus.Text = "Open cancelled";
            lblStatus.ForeColor = Color.Blue;
        }
    }
    // The 'using' block automatically disposes the dialog
}
😂 Joke: Why did the developer open a file? Because they wanted to read something! (Bad pun, I know - but you'll remember OpenFileDialog now!)

Step 4: SaveFileDialog - From Zero to Hero

What is SaveFileDialog? It lets users choose where to save a file. Essential for EVERY app!
🔍 Where to Find SaveFileDialog
  1. Open the Toolbox (View → Toolbox or Ctrl+Alt+X)
  2. Find the "Dialogs" section
  3. You'll see SaveFileDialog - it looks like a floppy disk icon
  4. Again: Drag it to the component tray (gray area below form)
Note: You can also create these dialogs in code without dragging them. Both ways work! We'll show you both methods.
💻 How to Use SaveFileDialog

Method 1: Using the one you dragged to the tray

Method 2: Creating it in code (recommended for beginners)

// ===== SAVE FILE DIALOG - COMPLETE GUIDE =====
// This code goes in your Form.cs file

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 📌 STEP 1: Check if there's anything to save
    if (string.IsNullOrWhiteSpace(txtContent.Text))
    {
        MessageBox.Show("Nothing to save - the textbox is empty!", 
            "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        return;
    }
    
    // 📌 STEP 2: Create a new SaveFileDialog
    using (SaveFileDialog saveFileDialog = new SaveFileDialog())
    {
        // 📌 STEP 3: Configure the dialog
        
        // 👉 Title: What shows at the top
        saveFileDialog.Title = "Save your work";
        
        // 👉 Filter: What file types to show
        saveFileDialog.Filter = "Text Files (*.txt)|*.txt|" +
                               "CSV Files (*.csv)|*.csv|" +
                               "All Files (*.*)|*.*";
        
        // 👉 DefaultExt: What extension to add if user doesn't type one
        saveFileDialog.DefaultExt = "txt";
        
        // 👉 AddExtension: Automatically add extension
        saveFileDialog.AddExtension = true;
        
        // 👉 OverwritePrompt: Ask if user wants to overwrite existing file
        saveFileDialog.OverwritePrompt = true;
        
        // 👉 InitialDirectory: Where to start
        saveFileDialog.InitialDirectory = Environment.GetFolderPath(
            Environment.SpecialFolder.MyDocuments);
        
        // 👉 FileName: Default file name (optional)
        saveFileDialog.FileName = "MyDocument";
        
        // 📌 STEP 4: Show the dialog and check result
        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            // 🎉 User clicked "Save" - now save the file
            
            // 👉 Get the chosen file path
            string filePath = saveFileDialog.FileName;
            
            // 👉 Save the content
            try
            {
                File.WriteAllText(filePath, txtContent.Text);
                
                // 👉 Update status
                string fileName = Path.GetFileName(filePath);
                lblStatus.Text = $"💾 Saved: {fileName}";
                lblStatus.ForeColor = Color.Green;
                
                // 👉 Show success message
                MessageBox.Show("File saved successfully!", "Success",
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                // 😱 Error saving
                MessageBox.Show($"Error: {ex.Message}", "Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        else
        {
            // 🚫 User clicked "Cancel"
            lblStatus.Text = "Save cancelled";
            lblStatus.ForeColor = Color.Blue;
        }
    }
}
😂 Joke: Why did the developer save the file? Because they had commitment issues! (Ctrl+S is the most pressed key combination in programming!)

🖨️ How to Add Print Functionality (Step by Step)

STEP 1 Create a New Windows Forms Project
  1. Open Visual Studio
  2. Click "Create a new project"
  3. Search for "Windows Forms App" and select it
  4. Name your project "PrintDemo" and click Create
✅ Done! You now have a blank form ready to build your app.
STEP 2 Add a DataGridView (To Show Your Data)
  1. Open the Toolbox (View → Toolbox or Ctrl + Alt + X)
  2. Find the "Data" section
  3. Drag DataGridView onto your form
  4. Resize it so it fills most of the form
  5. In the Properties window, set Dock = Fill
💡 Why DataGridView? It's the easiest way to show data in a table format. We'll put our student data here!
STEP 3 Add PrintDialog and PrintDocument
  1. Open the Toolbox again
  2. Find the "Dialogs" section
  3. Drag PrintDialog to the component tray (gray area below the form)
  4. Drag PrintDocument to the component tray as well
⚠️ IMPORTANT! Don't drag them onto the form - drag them to the GRAY AREA below the form!
That's called the "component tray" - it's where non-visual components live.
STEP 4 Add a Print Button with Icon
  1. Open the Toolbox
  2. Find the "Common Controls" section
  3. Drag a Button to the top of your form
  4. In the Properties window:
    • Set Text = "&Print" (the & makes P the shortcut key)
    • Set Image = Click the ... button → Select a printer icon
    • Set ImageAlign = MiddleLeft
    • Set TextAlign = MiddleRight
    • Set Size = 120, 40
✅ Now you have a button with a printer icon!
When users click it, they'll see the PrintDialog.
STEP 5 Add Sample Data to the DataGridView

Double-click the form (not the button) to create the Form_Load event.

// This code runs when the form loads
private void Form1_Load(object sender, EventArgs e)
{
    // Create a DataTable (like a mini database)
    DataTable dt = new DataTable();
    dt.Columns.Add("Name");
    dt.Columns.Add("Age");
    dt.Columns.Add("Grade");
    
    // Add rows
    dt.Rows.Add("Alice", 20, "A");
    dt.Rows.Add("Bob", 22, "B");
    dt.Rows.Add("Charlie", 21, "A+");
    
    // Show the data
    dataGridView1.DataSource = dt;
}

Now your DataGridView shows the student data!

STEP 6 Create the PrintPage Event

Double-click the PrintDocument in the component tray.

How to do it: Look at the gray area below your form. You'll see printDocument1 - double-click it!

This creates the printDocument1_PrintPage event:

// This is where we DRAW what to print
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
    Font printFont = new Font("Arial", 12);
    
    // Get data from the DataGridView
    DataTable dt = (DataTable)dataGridView1.DataSource;
    int y = 80;
    
    // Print a title
    e.Graphics.DrawString("Student Report", 
        new Font("Arial", 16, FontStyle.Bold), 
        Brushes.Black, 50, 30);
    
    // Print headers
    e.Graphics.DrawString("Name", printFont, Brushes.Black, 50, y);
    e.Graphics.DrawString("Age", printFont, Brushes.Black, 150, y);
    e.Graphics.DrawString("Grade", printFont, Brushes.Black, 250, y);
    y += 30;
    
    // Print each row
    foreach (DataRow row in dt.Rows)
    {
        e.Graphics.DrawString(row[0].ToString(), printFont, Brushes.Black, 50, y);
        e.Graphics.DrawString(row[1].ToString(), printFont, Brushes.Black, 150, y);
        e.Graphics.DrawString(row[2].ToString(), printFont, Brushes.Black, 250, y);
        y += 30;
    }
    
    e.HasMorePages = false;
}

📌 What's happening? We're drawing text on the page using e.Graphics.DrawString().

STEP 7 Connect the Print Button

Double-click the Print button to create the click event.

// This code runs when the Print button is clicked
private void btnPrint_Click(object sender, EventArgs e)
{
    // 1️⃣ Connect PrintDialog to PrintDocument
    printDialog1.Document = printDocument1;
    
    // 2️⃣ Show the PrintDialog and check if user clicked OK
    if (printDialog1.ShowDialog() == DialogResult.OK)
    {
        // 3️⃣ Start printing!
        printDocument1.Print();
        
        // 4️⃣ Show a message
        MessageBox.Show("🖨️ Document sent to the printer!", "Print Success");
    }
}
✅ That's it! Now when you click the Print button:
  1. The PrintDialog appears
  2. You choose your printer
  3. Click OK → Your table prints!
STEP 8 Complete Code - Copy and Paste

Here's the ENTIRE code for your form. Just copy and paste:

using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace PrintDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // ========== FORM LOAD ==========
        private void Form1_Load(object sender, EventArgs e)
        {
            // Create and fill a DataTable
            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("Age");
            dt.Columns.Add("Grade");
            
            dt.Rows.Add("Alice", 20, "A");
            dt.Rows.Add("Bob", 22, "B");
            dt.Rows.Add("Charlie", 21, "A+");
            
            dataGridView1.DataSource = dt;
        }

        // ========== PRINT BUTTON ==========
        private void btnPrint_Click(object sender, EventArgs e)
        {
            printDialog1.Document = printDocument1;
            if (printDialog1.ShowDialog() == DialogResult.OK)
            {
                printDocument1.Print();
                MessageBox.Show("🖨️ Printing started!", "Success");
            }
        }

        // ========== PRINT DOCUMENT ==========
        private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
        {
            Font printFont = new Font("Arial", 12);
            DataTable dt = (DataTable)dataGridView1.DataSource;
            int y = 80;
            
            // Title
            e.Graphics.DrawString("Student Report", 
                new Font("Arial", 16, FontStyle.Bold), 
                Brushes.Black, 50, 30);
            
            // Headers
            e.Graphics.DrawString("Name", printFont, Brushes.Black, 50, y);
            e.Graphics.DrawString("Age", printFont, Brushes.Black, 150, y);
            e.Graphics.DrawString("Grade", printFont, Brushes.Black, 250, y);
            y += 30;
            
            // Data rows
            foreach (DataRow row in dt.Rows)
            {
                e.Graphics.DrawString(row[0].ToString(), printFont, Brushes.Black, 50, y);
                e.Graphics.DrawString(row[1].ToString(), printFont, Brushes.Black, 150, y);
                e.Graphics.DrawString(row[2].ToString(), printFont, Brushes.Black, 250, y);
                y += 30;
            }
            
            e.HasMorePages = false;
        }
    }
}
✅ That's it! Press F5 to run your app and click the Print button!
🏆 What You Just Built!
  • ✅ A Windows Forms app with a DataGridView
  • ✅ Student data displayed in a table
  • ✅ A Print button with a printer icon
  • ✅ PrintDialog that lets users choose a printer
  • ✅ PrintDocument that prints the table
  • ✅ Formatted printing with title and headers
  • ✅ All done using drag-and-drop + double-click!
  • ✅ Zero manual code creation!
😂 Fun Joke: Why did the developer print their code? Because they wanted to see their paper-work! (Get it? Paperwork? ...I'll stop 😅)

Step 6: ColorDialog - Pick Colors Like a Pro

What is ColorDialog? It lets users choose colors from a palette. Great for customization!
🔍 Where to Find ColorDialog
  1. Open the Toolbox
  2. Find the "Dialogs" section
  3. You'll see ColorDialog - it's a color palette icon
  4. Drag it to the component tray
💻 How to Use ColorDialog
// ===== COLOR DIALOG - COMPLETE GUIDE =====

private void colorToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 📌 STEP 1: Create a ColorDialog
    using (ColorDialog colorDialog = new ColorDialog())
    {
        // 📌 STEP 2: Configure it
        colorDialog.FullOpen = true;  // Show the full color palette
        colorDialog.AnyColor = true;   // Allow any color
        
        // 👉 Set the starting color (current text color)
        colorDialog.Color = txtContent.ForeColor;
        
        // 📌 STEP 3: Show the dialog
        if (colorDialog.ShowDialog() == DialogResult.OK)
        {
            // 🎉 User chose a color - apply it!
            txtContent.ForeColor = colorDialog.Color;
            lblStatus.Text = $"🎨 Color changed to {colorDialog.Color.Name}";
            lblStatus.ForeColor = colorDialog.Color;
        }
    }
}
😂 Joke: Why did the developer choose blue? Because they were feeling blue! (Or maybe they just like the color!)

Step 7: FontDialog - Choose Fonts Like a Pro

What is FontDialog? It lets users choose font family, size, and style. Essential for text editors!
🔍 Where to Find FontDialog
  1. Open the Toolbox
  2. Find the "Dialogs" section
  3. You'll see FontDialog - it's a font icon
  4. Drag it to the component tray
💻 How to Use FontDialog
// ===== FONT DIALOG - COMPLETE GUIDE =====

private void fontToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 📌 STEP 1: Create a FontDialog
    using (FontDialog fontDialog = new FontDialog())
    {
        // 📌 STEP 2: Configure it
        fontDialog.ShowColor = true;  // Also show color picker
        fontDialog.AllowVectorFonts = true;
        fontDialog.ShowEffects = true;
        
        // 👉 Set the starting font (current text font)
        fontDialog.Font = txtContent.Font;
        fontDialog.Color = txtContent.ForeColor;
        
        // 📌 STEP 3: Show the dialog
        if (fontDialog.ShowDialog() == DialogResult.OK)
        {
            // 🎉 User chose a font - apply it!
            txtContent.Font = fontDialog.Font;
            txtContent.ForeColor = fontDialog.Color;
            
            lblStatus.Text = $"✏️ Font changed to {fontDialog.Font.Name} ({fontDialog.Font.Size}pt)";
            lblStatus.ForeColor = Color.Green;
        }
    }
}
😂 Joke: Why did the developer choose Comic Sans? Because they wanted to get fired! (Pro tip: NEVER use Comic Sans in a professional app!)

Step 8: FolderBrowserDialog - Choose Folders

What is FolderBrowserDialog? It lets users choose a folder instead of a file. Great for "Save to folder" features!
🔍 Where to Find FolderBrowserDialog
  1. Open the Toolbox
  2. Find the "Dialogs" section
  3. You'll see FolderBrowserDialog - it's a folder icon
  4. Drag it to the component tray
💻 How to Use FolderBrowserDialog
// ===== FOLDER BROWSER DIALOG - COMPLETE GUIDE =====

private void folderToolStripMenuItem_Click(object sender, EventArgs e)
{
    // 📌 STEP 1: Create a FolderBrowserDialog
    using (FolderBrowserDialog folderDialog = new FolderBrowserDialog())
    {
        // 📌 STEP 2: Configure it
        folderDialog.Description = "Select a folder to save your files";
        folderDialog.ShowNewFolderButton = true;
        folderDialog.RootFolder = Environment.SpecialFolder.MyComputer;
        folderDialog.SelectedPath = Environment.GetFolderPath(
            Environment.SpecialFolder.MyDocuments);
        
        // 📌 STEP 3: Show the dialog
        if (folderDialog.ShowDialog() == DialogResult.OK)
        {
            // 🎉 User chose a folder
            string selectedFolder = folderDialog.SelectedPath;
            
            // 👉 Show the selected path
            lblStatus.Text = $"📁 Selected folder: {selectedFolder}";
            lblStatus.ForeColor = Color.Green;
            
            // 👉 You can now use this folder to save files
            MessageBox.Show($"You selected:\n{selectedFolder}", 
                "Folder Selected");
        }
    }
}
😂 Joke: Why did the developer choose the folder? Because they wanted to organize their life! (We all need to organize our files!)

Step 9: Custom Dialogs - Your Own Pop-ups

What are Custom Dialogs? Sometimes you need your own dialog with specific controls - like an "About" or "Settings" window.
📝 Creating a Custom Dialog
  1. Add a new form
    • Right-click project → Add → Windows Form
    • Name it "AboutBox" or "SettingsForm"
  2. Design it
    • Add labels, picture boxes, buttons
    • Set FormBorderStyle = FixedDialog
    • Set MinimizeBox = false
    • Set MaximizeBox = false
    • Set StartPosition = CenterParent
  3. Add a button with DialogResult
    • Add an "OK" button
    • Set its DialogResult property to OK
🎯 Using the Custom Dialog
// ===== ABOUT BOX - CUSTOM DIALOG =====

// AboutBox.cs - The dialog form
public partial class AboutBox : Form
{
    public AboutBox()
    {
        InitializeComponent();
        
        // Set the text in the labels
        lblAppName.Text = "My Awesome App";
        lblVersion.Text = "Version 1.0.0";
        lblDescription.Text = "Built with C# and WinForms";
        lblCopyright.Text = "© 2024 My Company";
    }
}

// MainForm.cs - Show the dialog
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
    // Create and show the About Box
    using (AboutBox aboutBox = new AboutBox())
    {
        aboutBox.ShowDialog();  // Shows as modal dialog
    }
}

Users click About → See your custom dialog!

😂 Joke: Why did the custom dialog break up with the main form? Because it needed its own space! (I'll show myself out 😅)

🎯 Master Exercise: Build a Complete Text Editor

Your Challenge: Build a complete text editor with ALL dialogs!
What You'll Build:
  • MenuStrip with:
    • 📂 File → New, Open, Save, Save As, Print, Exit
    • ✏️ Edit → Cut, Copy, Paste, Select All
    • 🎨 Format → Font, Color
    • 📁 Tools → Choose Folder
    • ❓ Help → About
  • TextBox:
    • Dock = Fill
    • Multiline = true
    • ScrollBars = Both
    • WordWrap = true
  • StatusStrip:
    • Show file name
    • Show word count
    • Show character count
  • All Dialogs:
    • OpenFileDialog
    • SaveFileDialog
    • PrintDialog
    • PrintDocument
    • ColorDialog
    • FontDialog
    • FolderBrowserDialog
    • Custom About Dialog

🎉 Mastery Summary - What You Learned Today!

Menus
File, Edit, Help
OpenFileDialog
Open files
SaveFileDialog
Save files
PrintDialog
Print documents
ColorDialog
Choose colors
FontDialog
Choose fonts
FolderBrowserDialog
Choose folders
Custom Dialogs
About, Settings

🎯 You're now a MASTER of Menus and Dialogs in WinForms!

Test Your Knowledge - Take Quiz