作成日: 2022/12/26 最終更新日: 2023/08/23
文書種別
不具合
状況
修正済み
詳細
GcResizeコンポーネントを追加したプロジェクトをデバッグ実行して、フォームの×(閉じる)ボタンを押すと、デバッグ実行が正常に終了しない場合があります。
以下のようなケースで本現象が発生します。
- 新規プロジェクトを作成する。
- フォームにTextBoxを貼り付ける。
- TextBoxのPasswordCharプロパティに「*」を設定する。
- GcResizeを追加する。
- プロジェクトをデバッグ実行する。
- キーボードのCapsLockをオンにする。
- テキストボックスに警告ダイアログが表示される。
- 上記7の状態でフォームの×ボタンをクリックする。
- デバッグが実行中のまま終了しない。
親フォームが破棄された後にGcResizeのハンドルを解放する必要がありますが、上記のような特定の状況の場合、GcResizeのハンドルが先に開放され、その後TextBoxが解放される順に処理されます。この場合、TextBoxの警告ダイアログが表示されたままとなり、その状態でTextBoxのハンドルが開放されると、正常にデバッグが終了しない現象が発生します。
回避方法
Service Pack 2より前のバージョンでは次のいずれかの方法で回避可能です。
方法1:GcResizeのハンドル割り当てを明示的に行う方法
◎サンプルコード(VB)
Imports GrapeCity.Win.Components
Public Class Form1
Dim GcResize As GcResize
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
GcResize = New GcResize With {
.Target = Me
}
End Sub
End Class
方法2:クローズ時にアプリケーションを終了させる方法
◎サンプルコード(VB)
Public Class Form1
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
Application.Exit()
End Sub
End Class