Control.Leave
コントロールがフォーカスを失ったときに発生するイベントをサブスクライブできます。もともと、使用するのが最も適切なイベントだと思ってControl.LostFocus
いましたが、デザイナーからは利用できません。つまり、少し醜くて型破りなイベントを手動でサブスクライブする必要があります。
private void inputTextBox_Leave(object sender, EventArgs e)
{
if (inputTextBox.Text != string.Empty)
{
string input = inputTextBox.Text;
inputTextBox.Text = input.First().ToString(CultureInfo.InvariantCulture).ToUpper() +
string.Join(string.Empty, input.Skip(1));
}
}
あなたはあなたが興味を持っているように聞こえますControl.Validating
。を使用する利点はControl.Validating
、イベントハンドラーの指定された引数を利用できることです。プロパティをtrueCancelEventArgs
に設定します。Cancel
これにより、コントロールがフォーカスを失い、ユーザーに有効な値の入力を強制するのを防ぐことができます。入力をフォーマットする以外に何も検証していないため、これはアプリケーションには適切ではないと思います。
private void inputTextBox_Validating(object sender, CancelEventArgs e)
{
if (inputTextBox.Text == string.Empty)
{
statusLabel.Text = "The given input is not valid.";
e.Cancel = true;
}
}
フォームが閉じると、その後すべてのコントロールがフォーカスを失い、Control.Validating
イベントが発生して、すべてのフィールドが相対的な検証チェックに合格するまでフォームの閉じを停止する可能性があることに注意してください。この動作を回避する必要がある場合は、クイック検索が優先されます。