- 締切済み
Webbrowser1クリック検出後、フォームを閉じる方法
こちらのサイトを参考に、WebBrowser1内のクリックを検出しています。 http://homepage1.nifty.com/yasunari/VB/VBTips001.html Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Obj As Object = New ExtObj WebBrowser1.ObjectForScripting = Obj ~ナビゲート処理~ End Sub End Class <Runtime.InteropServices.ComVisible(True)> _ Public Class ExtObj Public Sub MsgBoxShow(ByVal Msg As String) ~呼び出し処理~ End Sub End Class 思い通りにブラウザ上のクリックを取得できています。 次のステップとして、「form1を閉じる」をしようとしてます。 ブラウザ上でのクリックで目的達成なので、form1を閉じようとしています。 しかし、うまくいきません。 以下のようなことを試しました。 ExtObj 内で、Me.Close() → 「closeはメンバではありません」 ExtObj 内で、Form1.close() → 無反応。エラー無し Form1内に次のような関数を作って、 Public Sub closeForm() Me.Close() End Sub ExtObj 内から、Form1.closeFormを呼び出し → 無反応 呼び出されたオブジェクト側から、親(?)を制御する方法が必要なのかなと感じています。 良い方法がありましたらよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
開発環境がVB2005以降なのであるなら Application.OpenFormsから親フォームを取得できると思いますよ dim oForm as Windows.Forms.Form oForm = Application.OpenForms(0) oForm.Close() で出来そうです ExtObj側のコンストラクタ(New)に Form型を引数にとるようにして この引数を クラス変数に設定しておくという手もありますよ <Runtime.InteropServices.ComVisible(True)> _ Public Class ExtObj private objForm as Windows.Forms.Form public Sub New( Optional oForm as Windows.Forms.Form = Nothing ) objForm = oForm end Sub Public Sub MsgBoxShow(ByVal Msg As String) ~呼び出し処理~ if objForm is nothing then objForm = Application.OpenForms(0) end if objForm.close() End Sub End Class といった具合で 呼び出し側を Dim Obj As Object = New ExtObj(Me) といった具合にしてみてはいかがでしょう