WPF_02_wpf_losowanie_liczb.md

#02wpflosowanie_liczb

Opis Losowanie liczb w C# robi się klasą Random. W WPF najczęściej wynik pokazuje się w TextBlock albo Label.

#MainWindow.xaml

XML<Window x:Class="Losowanie.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Losowanie" Height="250" Width="350">
    <StackPanel Margin="20">
        <TextBlock Text="Losowanie liczby" FontSize="24" Margin="0 0 0 20"/>

        <TextBox x:Name="MinTextBox" Text="1" Margin="0 0 0 10"/>
        <TextBox x:Name="MaxTextBox" Text="100" Margin="0 0 0 10"/>

        <Button Content="Losuj" Click="Losuj_Click" Margin="0 0 0 10"/>

        <TextBlock x:Name="WynikTextBlock" FontSize="20"/>
    </StackPanel>
</Window>

#MainWindow.xaml.cs

CSHARPusing System;
using System.Windows;

namespace Losowanie
{
    public partial class MainWindow : Window
    {
        Random random = new Random();

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Losuj_Click(object sender, RoutedEventArgs e)
        {
            int min = int.Parse(MinTextBox.Text);
            int max = int.Parse(MaxTextBox.Text);

            int wynik = random.Next(min, max + 1);

            WynikTextBlock.Text = "Wylosowano: " + wynik;
        }
    }
}

#Wersja z zabezpieczeniem błędów

CSHARPprivate void Losuj_Click(object sender, RoutedEventArgs e)
{
    bool czyMinOk = int.TryParse(MinTextBox.Text, out int min);
    bool czyMaxOk = int.TryParse(MaxTextBox.Text, out int max);

    if (!czyMinOk || !czyMaxOk)
    {
        WynikTextBlock.Text = "Podaj poprawne liczby";
        return;
    }

    if (min > max)
    {
        WynikTextBlock.Text = "Min nie może być większe od max";
        return;
    }

    int wynik = random.Next(min, max + 1);
    WynikTextBlock.Text = "Wylosowano: " + wynik;
}