Calculette

 

EXO Calculette

·       Programmer une calculette

·       Regarder la documentation pour la mise en page du xaml

·       Bien traiter les incidents

 

Cet exercice ne pose pas de problème particulier. Il permet de bien comprendre la logique événementielle de SilverLight.

 

Pour plus de détails sur les techniques de mises en page, consulter :

 

http://broux.developpez.com/articles/csharp/introduction-silverlight-2/

 

ou le support de cours WPF.

 

Code xaml :

 

<UserControl x:Class="SilverLigthCalculette.Page"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Width="300" Height="60">

 

    

       <Grid x:Name="Calcul" Width="300" Height="60" Background="Beige">

          

            <Grid.ColumnDefinitions>

                <ColumnDefinition Width="100"/>

                <ColumnDefinition Width="200"/>

            </Grid.ColumnDefinitions>

 

            <Grid.RowDefinitions>

                <RowDefinition Height="20"/>

                <RowDefinition Height="20"/>

                <RowDefinition Height="20"/>

            </Grid.RowDefinitions>

          

          

<TextBox x:Name="lblX"  IsReadOnly="True" Text="X"  Height="20"  Width="100" Grid.Column="0" Grid.Row="0"/>

TextBox x:Name="txtX"   Height="20"  Width="200" Grid.Column="1" Grid.Row="0"/>

TextBox x:Name="lblY" IsReadOnly="True" Text="Y" Height="20"  Width="100" Grid.Column="0" Grid.Row="1"/>

TextBox x:Name="txtY" Height="20"  Width="200" Grid.Column="1" Grid.Row="1"/>

        

          

<StackPanel Grid.Column="0" Grid.Row="2" Orientation="Horizontal">

<Button x:Name="btnPlus" Width="25" Content="+" Click="btnPlusClic"></Button>

<Button x:Name="btnMoins" Width="25" Content="-" Click="btnMoinsClic"></Button>

<Button x:Name="btnMult" Width="25" Content="*" Click="btnMultClic"></Button>

<Button x:Name="btnDivis" Width="25" Content="/" Click="btnDivClic"></Button>

                    </StackPanel>

          

          

<TextBox x:Name="txtR" Height="20"  Width="200" Grid.Column="1" Grid.Row="2"/>

          

        </Grid>

 

</UserControl>

 

 

 

Code behind :

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

 

namespace SilverLigthCalculette

{

    public partial class Page : UserControl

    {

        public Page()

        {

            InitializeComponent();

        }// fin constructeur

 

 

       private void btnPlusClic(object sender, RoutedEventArgs e)

        {

            int x;

            int y;

            int r;

 

            try

            {

                x = Int32.Parse(this.txtX.Text);

                y = Int32.Parse(this.txtY.Text);

                r = x + y;

                this.txtR.Text = r.ToString();

            }

            catch (FormatException ex)

            {

                this.txtR.Text = "erreur de saisie";

            }

            catch (Exception ex)

            {

                this.txtR.Text = ex.Message;

            }

 

        }//fin btnPlus

 

        private void btnMoinsClic(object sender, RoutedEventArgs e)

        {

            //DO IT

        }//fin btnMoins

 

        private void btnMultClic(object sender, RoutedEventArgs e)

        {

            //DO IT

        }//fin btnMult

 

        private void btnDivClic(object sender, RoutedEventArgs e)

        {

            int x;

            int y;

            Double r;

 

            try

            {

                x = Int32.Parse(this.txtX.Text);

                y = Int32.Parse(this.txtY.Text);

                if (y == 0)

                {

                    this.txtR.Text = "diviseur nul";

                }

                else

                {

                    r = (Double)x / (Double)y;

                    this.txtR.Text = r.ToString();

                }

            }

            catch (FormatException ex)

            {

                this.txtR.Text = "erreur de saisie";

            }

            catch (Exception ex)

            {

                this.txtR.Text = ex.Message;

            }

        }// fin btnDiv    }// fin class

}// fin namespace

 

Comme vous pouvez le constater, c’est du code événementiel classique. Il n’y a pas de différence par rapport à une application dot net windows ou WPF classique.

 

Regarder la démonstration :

 

http://asp.garraud.eu/Silverligth/SilverLigthCalculetteTestPage.html

 

 

Chapitre suivant.