[Xamarin.iOS] 04.Buttonコントロール

はじめに

今回は、Xamarin.iOS開発におけるButtonコントロールの使用方法を見ていきます。

環境

Visual Studio for Mac Community バージョン7.4(build 1033)

ターゲットOS:iOS11.2以上

画面のデザイン

はじめに、単一ビューアプリプロジェクトを作成したら、ソリューションエクスプローラーでMain.storyboardを開きます。

ツールボックスから、ButtonコントロールとLabelコントロールを1つずつ貼り付けてください。

次に、LabelコントロールのNameプロパティに「labelMsg」と入力します。これで、コードからlabelMsgという名前でLabelコントロールが操作できるようになります。

Buttonのイベントを作成する

続いてButtonがタップされたら、Labelに「Hello!!」と表示するようにして見ましょう。

Buttonがタップされたことを知るには、イベントを作成する必要があります。

貼り付けたButtonを選択状態にしたら、プロパティのEventsタブを選択します。次に、UpInsideの欄に任意のイベント名を入力します。ここでは「Button_TouchUp」としました。

「Button_TouchUp」と入力したら、そのまま[enter]キーを押してください。

コードエディタが開き、今入力した「Button_TouchUp」のイベントコードをどこに挿入するかを聞かれます。[↑]キーまたは[↓]キーで挿入位置を選択し、[enter]キーを押すと、イベントコードが挿入されます。

イベントコードが挿入されたら、以下のようにコードを編集します。

partial void Button_TouchUp(UIButton sender)
{
	labelMsg.Text = "Hello!!";
}

先ほど名前をつけた「labelMsg」のTextプロパティに「Hello!!」を代入していますので、ButtonをタップするとLabelには「Hello!!」が表示されます。

 

 

[Tips][Button] クリックイベントを発生させる

本記事はWindowsアプリケーションのTipsです。


外部から、ボタンのクリックイベントを発生させるには、PerformClickメソッドを使用します。

サンプルではButton2がクリックされたときに、Button1のクリックイベントを発生させています。

VBの例

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MessageBox.Show("Button1がクリックされました。")
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    'PerformClickを使用してButton1をクリックする
    Button1.PerformClick()
End Sub


C#の例

private void Button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("Button1がクリックされました。");
}

private void button2_Click(object sender, EventArgs e)
{
    //PerformClickを使用してButton1をクリックする
    Button1.PerformClick();
}

[Tips][Button] ボタンをクリックしたときに親フォームに返す値を設定する

本記事はWindowsアプリケーションのTipsです。


サブフォームでボタンがクリックされたときに、親フォームに返す値を設定するには、DialogResultプロパティを使用します。

DialogResultプロパティには、表1に示すDialogResult列挙体の値を指定します。

メンバ名 説明
Abort 中止を意味します
Cancel キャンセルを意味します
Ignore 無視を意味します
No いいえを意味します
None ダイアログボックスからNothingを返します。つまりダイアログボックスの実行が継続します。
OK OKを意味します
Retry 再試行を意味します
Yes はいを意味します

サンプルを実行するにはForm1とForm2を準備して下さい。

Form1にはButtonを1個貼り付け(Button1)。

Form2にはButtonを7個貼り付け(Button1~Button7)。

Button1~Button7のTextプロパティは、順にOK,Cancel,Abort,Retry,Ignore,Yes,Noとしてください。

親フォームに返す値を設定する

VBの例

'***** Form1のコード *****
'Form1 - Button1クリック時の処理
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim frmDialog As New Form2
    Dim Result As System.Windows.Forms.DialogResult

    Result = frmDialog.ShowDialog()

    MessageBox.Show(Result.ToString() & "が選択されました。")
End Sub

'***** Form2のコード *****
'Form2ロード時の処理(各ボタンに親フォームに返す値を設定)
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Button1.DialogResult = Windows.Forms.DialogResult.OK
    Button2.DialogResult = Windows.Forms.DialogResult.Cancel
    Button3.DialogResult = Windows.Forms.DialogResult.Abort
    Button4.DialogResult = Windows.Forms.DialogResult.Retry
    Button5.DialogResult = Windows.Forms.DialogResult.Ignore
    Button6.DialogResult = Windows.Forms.DialogResult.Yes
    Button7.DialogResult = Windows.Forms.DialogResult.No
End Sub

C#の例

'***** Form1のコード *****
'Form1 - Button1クリック時の処理
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim frmDialog As New Form2
    Dim Result As System.Windows.Forms.DialogResult

    Result = frmDialog.ShowDialog()

    MessageBox.Show(Result.ToString() & "が選択されました。")
End Sub

'***** Form2のコード *****
'Form2ロード時の処理(各ボタンに親フォームに返す値を設定)
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Button1.DialogResult = Windows.Forms.DialogResult.OK
    Button2.DialogResult = Windows.Forms.DialogResult.Cancel
    Button3.DialogResult = Windows.Forms.DialogResult.Abort
    Button4.DialogResult = Windows.Forms.DialogResult.Retry
    Button5.DialogResult = Windows.Forms.DialogResult.Ignore
    Button6.DialogResult = Windows.Forms.DialogResult.Yes
    Button7.DialogResult = Windows.Forms.DialogResult.No
End Sub