۹

مقدمه Windows Forms 🖥️

ساخت اپلیکیشن‌های دسکتاپ زیبا و کاربردی با Windows Forms!

Windows Forms چیست؟

Windows Forms یک فریمورک قدرتمند برای ساخت اپلیکیشن‌های دسکتاپ در ویندوز است. با استفاده از WinForms می‌توانید رابط‌های کاربری زیبا و تعاملی بسازید.

ایجاد پروژه Windows Forms C#
// در Visual Studio:
// File → New → Project → Windows Forms App (.NET)

using System;
using System.Windows.Forms;

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

طراحی فرم با Visual Studio Designer

Visual Studio یک Designer قدرتمند دارد که به شما امکان طراحی فرم‌ها به صورت بصری را می‌دهد. می‌توانید کنترل‌ها را با کشیدن و رها کردن اضافه کنید.

تنظیمات اولیه فرم C#
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        
        // تنظیمات فرم
        this.Text = "اولین اپلیکیشن من";
        this.Size = new Size(400, 300);
        this.StartPosition = FormStartPosition.CenterScreen;
        this.FormBorderStyle = FormBorderStyle.FixedSingle;
        this.MaximizeBox = false;
    }
}

اضافه کردن کنترل‌ها

می‌توانید کنترل‌های مختلفی مثل Button، Label، TextBox و غیره را به فرم اضافه کنید. هر کنترل ویژگی‌ها و رویدادهای خاص خود را دارد.

اضافه کردن کنترل‌ها به صورت کدی C#
public Form1()
{
    InitializeComponent();
    
    // ایجاد یک Label
    Label lblWelcome = new Label();
    lblWelcome.Text = "خوش آمدید!";
    lblWelcome.Location = new Point(50, 30);
    lblWelcome.Size = new Size(100, 30);
    
    // ایجاد یک Button
    Button btnClick = new Button();
    btnClick.Text = "کلیک کنید";
    btnClick.Location = new Point(50, 80);
    btnClick.Size = new Size(100, 30);
    
    // اضافه کردن به فرم
    this.Controls.Add(lblWelcome);
    this.Controls.Add(btnClick);
}

مدیریت رویدادها (Event Handling)

رویدادها اجازه می‌دهند که فرم شما به اعمال کاربر واکنش نشان دهد. مثلاً وقتی کاربر روی دکمه کلیک می‌کند، یک رویداد اتفاق می‌افتد.

مثال کامل فرم با رویداد C#
public partial class Form1 : Form
{
    private Label lblMessage;
    private Button btnGreet;
    private TextBox txtName;
    
    public Form1()
    {
        InitializeComponent();
        SetupForm();
    }
    
    private void SetupForm()
    {
        // تنظیمات فرم
        this.Text = "فرم خوش‌آمدگویی";
        this.Size = new Size(350, 200);
        
        // TextBox برای نام
        txtName = new TextBox();
        txtName.Location = new Point(50, 30);
        txtName.Size = new Size(200, 25);
        
        // Button برای سلام
        btnGreet = new Button();
        btnGreet.Text = "سلام بگو";
        btnGreet.Location = new Point(50, 70);
        btnGreet.Click += BtnGreet_Click; // اتصال رویداد
        
        // Label برای نمایش پیام
        lblMessage = new Label();
        lblMessage.Location = new Point(50, 110);
        lblMessage.Size = new Size(250, 30);
        
        // اضافه کردن کنترل‌ها
        this.Controls.Add(txtName);
        this.Controls.Add(btnGreet);
        this.Controls.Add(lblMessage);
    }
    
    private void BtnGreet_Click(object sender, EventArgs e)
    {
        string name = txtName.Text;
        if (!string.IsNullOrEmpty(name))
        {
            lblMessage.Text = $"سلام {name}! خوش آمدید!";
        }
        else
        {
            lblMessage.Text = "لطفاً نام خود را وارد کنید.";
        }
    }
}

تمرین! 🧠

یک فرم Windows Forms بسازید که شامل یک TextBox برای وارد کردن عدد، یک Button برای محاسبه و یک Label برای نمایش نتیجه باشد. وقتی کاربر عددی وارد کرد و دکمه را زد، مربع آن عدد نمایش داده شود.

جواب تمرین

public partial class Form1 : Form
{
    private TextBox txtNumber;
    private Button btnCalculate;
    private Label lblResult;
    
    public Form1()
    {
        InitializeComponent();
        SetupCalculatorForm();
    }
    
    private void SetupCalculatorForm()
    {
        this.Text = "محاسبه‌گر مربع";
        this.Size = new Size(300, 180);
        
        // TextBox برای عدد
        txtNumber = new TextBox();
        txtNumber.Location = new Point(50, 30);
        txtNumber.Size = new Size(150, 25);
        
        // Button برای محاسبه
        btnCalculate = new Button();
        btnCalculate.Text = "محاسبه مربع";
        btnCalculate.Location = new Point(50, 70);
        btnCalculate.Size = new Size(100, 30);
        btnCalculate.Click += BtnCalculate_Click;
        
        // Label برای نتیجه
        lblResult = new Label();
        lblResult.Location = new Point(50, 110);
        lblResult.Size = new Size(200, 30);
        
        this.Controls.Add(txtNumber);
        this.Controls.Add(btnCalculate);
        this.Controls.Add(lblResult);
    }
    
    private void BtnCalculate_Click(object sender, EventArgs e)
    {
        if (int.TryParse(txtNumber.Text, out int number))
        {
            int square = number * number;
            lblResult.Text = $"مربع {number} برابر {square} است.";
        }
        else
        {
            lblResult.Text = "لطفاً یک عدد معتبر وارد کنید.";
        }
    }
}