はじめに
こんにちは。初めてQiitaを書きます。ドッキドキです。 よろしくお願いします。2020年に新卒で入社した会社でC#とWPFを使ってぼちぼちやっています。
前々から気になっていたXamarinを使ってみたので自分のアウトプットの場として記事を書こうと思った次第です。
作ったもの
今回はお試しということで、簡単な四則演算アプリを作りました。数字を入力、演算子を選択して計算ボタンを押すと答えが出力されるだけのものになります。
コード
XamlMainPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="test1.MainPage">
<StackLayout Orientation="Vertical" Margin="30,50,0,0">
<StackLayout Orientation="Horizontal">
<Entry x:Name="left" WidthRequest="100" VerticalOptions="Start"/>
<Picker x:Name="picker"/>
<Entry x:Name="right" WidthRequest="100" VerticalOptions="Start" />
<Label Text="="/>
<Label x:Name="answer" WidthRequest="100" />
</StackLayout>
<Button x:Name="button" Text="計算" Clicked="OnButtonClicked"/>
</StackLayout>
</ContentPage>
C#
MainPage.Xaml.cs
using System;
using Xamarin.Forms;
namespace test1
{
public partial class MainPage : ContentPage
{
static string[] operators = new[] { "+", "-", "×", "÷" };
public MainPage()
{
InitializeComponent();
// pickerに演算子をセット
picker.ItemsSource = operators;
// 初期値は"+"
picker.SelectedIndex = 0;
}
void OnButtonClicked(object sender, EventArgs e)
{
var leftNumberText = left.Text;
var rightNumberText = right.Text;
if (double.TryParse(leftNumberText, out var leftNumber) &&
double.TryParse(rightNumberText, out var rightNumber)){
var answer = Calculate(leftNumber, rightNumber, picker.SelectedItem.ToString());
this.answer.Text = answer.ToString();
}
}
static double Calculate(double leftNumber, double rightNumber, string ope)
{
switch (ope)
{
case "+":
return leftNumber + rightNumber;
case "-":
return leftNumber - rightNumber;
case "×":
return leftNumber * rightNumber;
case "÷":
if (rightNumber == 0) {
throw new InvalidOperationException();
} else {
return leftNumber / rightNumber;
}
default:
throw new InvalidOperationException();
}
}
}
}
ただボタンのイベントハンドラで計算してるだけですね。
WPFとのコントロールの違いに少し戸惑いました。
お試しなので、コードの内容については(例外処理とか)多めに見てくださいということで。
マシンが非力なせいか、Xamarinだから仕方ないのかエミュレーターの起動が遅くてイライラしますね。
夏のボーナスでたら新しいMac買おうかな。。。
今回はコードビハインドでやりましたが、次はViewModel作ってMVVMで四則演算したいと思います。