私が今している仕事はVBで記述したプログラムをVB.NETに移行する作業なんですが
どうしてもShowDialog()でエラーが出て動きません。
Show()では動くんですがモーダルフォームでないとだめなので使えません。
エラーは「'System.NullReferenceException' のハンドルされていない例外が
system.windows.forms.dll で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。」というものです。ロジックはこうです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Private Sub cmdRecInfo_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdRecInfo.Click
Dim blnRet As Boolean ' 戻り値
Dim ucRet As Byte ' 戻り値
Static blnEvents As Boolean ' 処理排他フラグ
Dim sFuncName As String
sFuncName = "cmdRecInfo_Click"
'' 「処理中」終了
If blnEvents = True Then Exit Sub
blnEvents = True
'========================================
'' 詳細画面モーダル表示
'========================================
blnRet = frmHistInfo.DefInstance.FormDispInitialize
If blnRet = True Then
' 画面表示
frmHistInfo.DefInstance.ShowDialog()
System.Windows.Forms.Application.DoEvents()
Else
ucRet = CMsgBox.csMsgBox("初期処理異常!!",
BTN_OK_ONLY + ICO_INFORMATION)
System.Windows.Forms.Application.DoEvents()
End If
Call lvwHistInf.Focus()
blnEvents = False
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
frmHistListsフォームからfrmHistInfoを読み込みたいのですが・・・・
ごめんなさい、説明がうまくできなくて;;
.NETの場合、VB6と比べて、その辺の方法が完全に
変更されています。フォームもオブジェクト(クラス)なので・・・
Dim objForm as frmHinstLists
objForm = New frmHinstLists
objForm.Show()
objForm,Dispose()
このように書きます。
frmHinstInfo の方をShowする場合、frmHinstListsの方で・・・
Dim objForm as frmHinstInfo
objForm = New frmHinstInfo
objForm.Show()
objForm,Dispose()
とやってみて下さい。
※ 因みに、VB.NET 2002 ですか? 2003 ですか?
2003 の方の変換ウィザードの方が、2002よりは
マシなコードにしてくれた・・・と思ってました
が・・・
以上。
ツイート | ![]() |