Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

WPF アプリケーションにおいて文字入力可能なコントロールを無効化した場合の挙動について

こんにちは、Platform SDK (Windows SDK) サポートチームです。

今回は、WPF アプリケーションにおいて、文字入力可能なコントロールの Isenabled プロパティを False に設定した場合の挙動についてご案内します。

現象

WPFのコントロールは、IsEnabled プロパティを False に設定してすることによりそのコントロールを無効化することが可能です。

この場合、マウスやタブ キー等で選択やフォーカスを設定することができなくなり、TextBoxBase クラスから派生した TextBox クラスや ComboBox クラス等の文字入力可能なコントロールでは文字を入力できない状態になります。

しかしながら、テキストを設定してあるコントロールに対して右クリック等によりコンテキスト メニューを表示するとメニューアイテムとして変換候補が含まれますが、この表示された変換候補から選択すると、コントロール内の文字列が選択した文字列に変更されます。

具体的には、以下のスクリーンショットのとおり、TextBox に表示された「TextBox」という文字列が、コンテキスト メニューにある「TextBox」を選択するとその文字列に変更されています。

原因

WPF では、コントロールの IsEnabled プロパティの状態によらず候補が表示されます。

回避策

コンテキスト メニューの表示は WPF 内で実装しており、IsReadOnly プロパティが True の場合はコンテキスト メニューを表示しません。

このため、IsEnabled プロパティを False に設定するのに加え、IsReadOnly プロパティを True に設定することにより、意図していないコントロール内の文字列編集を防ぐことが可能です。

参考情報

UIElement.IsEnabled プロパティ
https://msdn.microsoft.com/ja-jp/library/system.windows.uielement.isenabled.aspx

TextBoxBase.IsReadOnly プロパティ
https://msdn.microsoft.com/ja-jp/library/system.windows.controls.primitives.textboxbase.isreadonly.aspx

Share the post

WPF アプリケーションにおいて文字入力可能なコントロールを無効化した場合の挙動について

×

Subscribe to Msdn Blogs | Get The Latest Information, Insights, Announcements, And News From Microsoft Experts And Developers In The Msdn Blogs.

Get updates delivered right to your inbox!

Thank you for your subscription

×