Top / TIPS / ユーザコントロールのEnabledプロパティ

ユーザコントロールを貼り付けたフォームをモーダル表示すると、Enabled プロパティがうまく動作してくれません。

具体的には、

Public Property Let Enabled(ByVal New_Enabled As Boolean)
    UserControl.Enabled = New_Enabled
End Property

のようなコーディングをすると、False を代入しても、UserControl.Enabled プロパティは、True のままになり、フォーカスを受け取ってしまいます。

EnableWindow API を使うことで、これを回避できます。

Private Declare Function EnableWindow Lib "user32" _
            Alias "EnableWindow" (ByVal hwnd As Long, _
                                  ByVal fEnable As Long) As Long

Public Property Let Enabled(ByVal New_Enabled As Boolean)
   If New_Enabled Then
      EnableWindow UserControl.hWnd, 1
   Else
      EnableWindow UserControl.hWnd, 0
   End If
   m_Enabled = New_Enabled '※
End Property

※ プロパティの取得は、変数から取得するようにします。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-10-27 (火) 02:35:54 (2851d)