A Day In The Life

とあるプログラマの備忘録

MDI子フォームでEnterキーが拾えない。

MDI フォームにおいて、2つのMDI 子フォームを作成しました。
MDI子フォームAとBがありまして

A画面にB画面を開くボタンが配置されています。

A画面からB画面を開きB画面を閉じてA画面に戻ります。

その後、A画面のテキストボックスでEnterキーを押すとなぜかB画面が開いてしまいます。



どうもフォーカスが開くボタンに残ったままになっているらしいです...。

ネットで調べたところ.NET Frameworkのバグだったことが判明しました。



回避方法としてはMDI親フォームでUpdateDefaultButtonメソッドをオーバーライドしてやれば解決するみたいです。

Public Class FormMdiParent
  Inherits Windows.Forms.Form

  Protected Overrides Sub UpdateDefaultButton()
    '何もしない
  End Sub
End Class

↑こんな感じです。
気をつけましょう!