皆大好きButtonコントロール。アプリを開発したことがある人なら、おそらく一度はボタンというものを使ったことがあるはずと言っても過言ではない、とっても一般的なコントロールの1つである。
さて、ボタンというものにはEnterキーを押されたときにクリックイベントを発行するデフォルトのボタンと、Escキーを押されたときにクリックイベントを発行するキャンセルボタンがある。Windows Formアプリケーションでは、Formに、デフォルトのボタンをキャンセルボタンを設定するプロパティがあった。(と記憶している)
WPFでは、ボタン自身にこのプロパティが移動している。
デフォルトのボタンとキャンセルボタンに関するButtonのプロパティ
- IsDefaultプロパティ
TrueにするとEnterキーを押したときにクリックイベントが走る - IsCancelプロパティ
TrieにするとEnterキーを押したときにクリックイベントが走る
ということで実験。テキストフィールド1つとボタン2つを置いて、一方のボタンをデフォルトのボタン、もう一方のボタンをキャンセルボタンにしてみた。
各々のボタンのクリックイベントで、押されたボタンがわかるようなメッセージボックスを表示するようにしてみた。
<Window x:Class="WpfButton.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel>
<TextBox />
<!-- デフォルトのボタン(Enterでクリック) -->
<Button Name="button1" Content="Default Button" IsDefault="True" Click="button1_Click" />
<!-- キャンセルボタン(Escでクリック) -->
<Button Name="button2" Content="Cancel Button" IsCancel="True" Click="button2_Click" />
</StackPanel>
</Window>
using System.Windows;
namespace WpfButton
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Default Button Click!!");
}
private void button2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Cancel Button Click!!");
}
}
}
早速実行!
テキストボックスにフォーカスがある状態でEnterキーを押すとbutton1のクリックイベントが走る。
テキストボックスにフォーカスがある状態でEscキーを押すとbutton2のクリックイベントが走る。