winform アプリケーションに配置するカスタム数字キーパッド コントロールを作成しました。すべてのボタンにはOnClick
、カスタム コントロールを配置したフォーム内のフォーカスされたテキスト ボックスに値を送信するイベントがあります。このような:
private void btnNum1_Click(object sender, EventArgs e)
{
if (focusedCtrl != null && focusedCtrl is TextBox)
{
focusedCtrl.Focus();
SendKeys.Send("1");
}
}
focusedCtrl
MouseDown
次のようにボタンのイベントに設定する必要があります。
private void btnNum1_MouseDown(object sender, EventArgs e)
{
focusedCtrl = this.ActiveControl;
}
wherethis.ActiveControl
は、フォーム上のアクティブなコントロールを表します。
私の問題は、イベントがフォーカスされたコントロールが以前に何であったかを検出する前に、ボタンが常にフォーカスを受け取ることです。ボタンがフォーカスされる前にどのコントロールにフォーカスがあったかを検出するにはどうすればよいですか? 使用すべき別のイベントはありますか? 前もって感謝します!
編集:また、GotFocus
フォームの各テキストボックスでイベントを使用して設定するのfocusedCtrl
は面倒な場合があり、カスタムコントロールのすべてのコーディングをフォームではなくコントロール自体に配置したいため、設定したくありません配置されます。(ただし、私が求めていることを行うための実際的な方法が他にない場合は、これを行います)