「夫を成功」へ導く妻の秘訣 座談会

VS2010を使ってプログラムを作っております。

プログラムが完成し、知人のパソコン(windows Vista)にDebugフォルダを移しexeファイルを実行すると、スタートフォームまでは行けるのですが、別のフォームを開くボタンを押すと以下の様なエラーが出てしまいます。

「フォームの作成中にエラーが発生しました」

続行、終了と選択肢があり、続行を選ぶとスタートフォームのみ表示された状態になり、終了を押すと全て終了されてしまいます。
.NetFrameWork4は入れてあります。
作成したPCでデバッグしたり、Debugフォルダからexeを実行した時には何もエラーが出ず、そのDebugフォルダを他の場所に移し実行してもエラーは出ません。

原因の分かる方、おられましたらご教示願います。

「フォームの作成中にエラーが発生しました」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (1件)

エラーのダイアログに 「PowerPacks のファイルが見つからない」 って出てるじゃないですか。


相手の PC に PowerPacks が配布されていないのが原因でしょう。
PowerPacks も配布するようにしてください。
セットアップ プロジェクトを作成すれば必須コンポーネントとして配布されます。
http://www.atmarkit.co.jp/fdotnet/dotnettips/781 …
http://msdn.microsoft.com/ja-jp/vbasic/bb735936


蛇足ですが、単体で exe を配布するにしても、Debug フォルダーの中に作成されたものではなく Release ビルドして Release フォルダーに作成されたものを配るようにしてください。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVB6→VS2005アップグレード後のエラーについて

VBを勉強中です。
段階としては書籍やサイトの見本プログラムを
いくつか真似て作っているところです。

VB6で作られたプログラムのバージョンアップを
行う作業で、VB6→VS2005アップグレード完了後、
ビルドは完了するものの以下の警告が発生します。


変数 'int_d_sh' は、値が割り当てられる前に使用されています。Null 参照の例外が実行時に発生する可能性があります。


「int_d_shが宣言された後、If int_d_sh = "PSUP" Thenまでの間で
If int_d_shに値が入っていないのが原因なのでしょうか?」

「又、それが原因かどうかはわからないのですが
デバッグ中に下記の例外エラーメッセージが発生し
デバッグが完了しませんでした。」


[InvalidOperationExceptionはハンドルされませんでした。]
フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラー: System.Security.Permissions.SecurityPermission


「詳細を表示したのですが、どこを参照すれば良いのか
わかりませんでした。
どうすれば解決するのでしょうか?
以下は例外エラーが示したコード部分です。
よろしくお願いします。」


<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>Partial Class frm○○(プロジェクト名)
#Region "Windows フォーム デザイナによって生成されたコード "
<System.Diagnostics.DebuggerNonUserCode()> Public Sub New()
MyBase.New()
'この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent()
End Sub

VBを勉強中です。
段階としては書籍やサイトの見本プログラムを
いくつか真似て作っているところです。

VB6で作られたプログラムのバージョンアップを
行う作業で、VB6→VS2005アップグレード完了後、
ビルドは完了するものの以下の警告が発生します。


変数 'int_d_sh' は、値が割り当てられる前に使用されています。Null 参照の例外が実行時に発生する可能性があります。


「int_d_shが宣言された後、If int_d_sh = "PSUP" Thenまでの間で
If int_d_shに値が入っていないのが原因なのでしょうか...続きを読む

Aベストアンサー

「変数 'int_d_sh' は、値が割り当てられる前に使用されています。Null 参照の例外が実行時に発生する可能性があります。」

VBしか使ったことが無ければ判らないかもしれませんが、C/C++ではおなじみの警告文です。
VB6までは変数を宣言すると自動的に初期化される仕様でした。(この仕様のために宣言時に初期値の設定ができなかった)
だから変数に値を代入せずにいきなり使用してもエラーにはなりませんでした。
しかし、VB.NETになってからは変数の宣言時に初期化しなくなりました。(その代わりに初期値を設定できる)
そのために、変数を宣言しただけでは変数にはゴミが入っています。
ゴミの状態によっては、その変数のデータ型では許可されないようなデータ(ビットパターン)になる可能性があります。
そんな状態でその変数を参照するとエラー(Null参照は一例)になったりします。(しかもエラーの原因が判らないことがある)

そういうエラー発生を防ぐために上記の警告文がでてきます。
対策としては、宣言時に初期値を入れたり、参照前に値の代入を行います。

「変数 'int_d_sh' は、値が割り当てられる前に使用されています。Null 参照の例外が実行時に発生する可能性があります。」

VBしか使ったことが無ければ判らないかもしれませんが、C/C++ではおなじみの警告文です。
VB6までは変数を宣言すると自動的に初期化される仕様でした。(この仕様のために宣言時に初期値の設定ができなかった)
だから変数に値を代入せずにいきなり使用してもエラーにはなりませんでした。
しかし、VB.NETになってからは変数の宣言時に初期化しなくなりました。(その代わりに初期値...続きを読む

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む

QVB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?

VB6.0で、例:StrConv(Text, vbFromUnicode)とかで使用する、
「vbFromUnicode」(文字列を Unicode からシステムの既定のコードページに変換する)
は、VB.NETでは使用できないようです。(相当する定数はない?)

「vbFromUnicode」と同等の機能を、VB.NETで使用したいのですが、
どうすれば良いでしょうか?

Aベストアンサー

思いっきり、例文に「COM1」と書いてますが、USBに書き換えてくださいね^^;

それとふと思ったのですが
udtReaderWriterModeWithoutEncryption
変数は構造体ですよね?

メンバが
lngPortName
lngBardRate
というのは、型宣言をINTEGERに変換してますよね?

ちょっとばかり不安に思ったので、追記しておきました。

参考URL:http://okweb.jp/kotaeru.php3?q=1257613

QVB.NETで他のプロジェクトで作成したフォームを使う方法

こんにちは。
VB.NETのプロジェクトがぐちゃぐちゃで参照設定とかいろんなの呼んでしまっているので、新しく作成しなおしたいのですが、
新しいプロジェクトでプロジェクトを作成し、前のプロジェクトで必要なファイル(.vb、RESX)を新しいプロジェクトのフォルダにコピーしたのですが、
普通のモジュールは追加>新しい項目の追加でなんとか追加できたのですが、フォームの追加の仕方がわかりません><教えてくださいー

P.S. RESXファイルってフォームのデータが入ってるのでしょうか?そんな気がしてコピーしたのですが。

※VB6.0からVB.NETに以降した際にアップデート情報みたいなのがプログラム上にくっついてしまって.vbファイルも参照項目も増えまくってしまった

Aベストアンサー

ドラッグ&ドロップが使いやすい。
Windowsのエクスプローラでvbファイルをドラッグして、VS.NETのソリューションエクスプローラへドロップする。

QVB上で実行中の無限ループの止め方

今まで、CUIベースのBASICでのプログラムの経験はあるのですが
Visual系のBASICは初心者です。
原因はわかっているのでプログラムの修正はできるのですが
VB上でコンパイルして実行したときに無限ループに陥ってしまって
どうにもプログラムをとめられなくなります。
そんなことがないように、実行前に全てのプロジェクトを保存して
いますので、そんなに実害はないのですが、どうすればとめられるのでしょう・・
今現在は、タスクマネージャーから強制終了させています。

Aベストアンサー

無限ループの一番内側に
DoEvents
を入れておくと、ウィンドウ切替え->デバッガ終了操作が出来ますよ

危なそうなとこにも入れておくと、何かと安心です。

Q外部プロセスを終了したい!!

こんにちは。
ご多忙の中、申し訳ありませんが皆さんの知恵をお貸しください。

私はVBは初心者中の初心者なのですが、
あるアプリケーションからEXEをキックし(このEXEは永久ループ)、
ある程度の処理をしたら、キックしたEXEを終了させたいと考えております。

基本的にキックされたEXEがウェイトして自らおちるのではなく、キックした
アプリから落としたいと考えています。

簡単に言えば、UNIXでいうKILLコマンドのような関数はありますかと
言うことです。(プロセスIDを使用して・・・)

ご存知の方がいらっしゃいましたら、教えてください。
宜しくお願い致します。m(_ _)m

Aベストアンサー

サンプルをどうぞ。
http://www.microsoft.com/JAPAN/support/kb/articles/JP129/7/97.asp
しかし、強制終了するはあまりよくないと思います。
WM_CLOSEメッセージを投げる方法をお勧めします。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=157242

QVB.NET で作られたソフトを動かすのに必要なモノは?

つい3日前から購入したばかりのVB.NETの勉強を始めました。
まだ習得しきってない段階で、先走りかもしれませんが、
モヤモヤと気になることがあるので質問いたします。
(私はVB5の素人プログラマでした。VB6は知りません)

VB関連のランタイムを集めているたとえばこんなサイトが
あります。
http://www.vector.co.jp/vpack/filearea/win/util/runtime/index.html

ん~!?「NET用」のDLLとかランタイムが無いではないか?
VB5の配布時に使っていた「セットアップ・ウィザード」に該当する
機能も、NETに見いだせません。(見落としているんでしょうか?)

つーことは....VB.NETで作ったエグゼファイルは、
単独で動作するもんなんでしょうか?

「MSネット環境では動作する」という場合、それってどういう
環境なんでしょうか? プログラムを公開するページで、
コンピュータに私以上に詳しくないユーザーに、何を求めれば
いいのでしょうか?
(OS環境や必要なランタイムをどう説明すればいいのでしょうか?)

つい3日前から購入したばかりのVB.NETの勉強を始めました。
まだ習得しきってない段階で、先走りかもしれませんが、
モヤモヤと気になることがあるので質問いたします。
(私はVB5の素人プログラマでした。VB6は知りません)

VB関連のランタイムを集めているたとえばこんなサイトが
あります。
http://www.vector.co.jp/vpack/filearea/win/util/runtime/index.html

ん~!?「NET用」のDLLとかランタイムが無いではないか?
VB5の配布時に使っていた「セットアップ・ウィザ...続きを読む

Aベストアンサー

.NETのプログラムの実行には、.NET Frameworkと呼ばれる実行環境が必要です。
http://www.atmarkit.co.jp/fdotnet/basics/msdotnet/msdotnet_01.html

これは、WindowsUpdateでもインストール可能だたと思いますが、
こちらからもダウンロードできます。
http://www.microsoft.com/japan/msdn/netframework/downloads/

.NET2003で開発したものなら、「.NET Framework 1.1 再頒布パッケージ」および
「Microsoft .NET Framework Version 1.1 日本語 Language Pack」 を
インストールすることにより、.NET Framework を使用して開発された
アプリケーションを実行することができます。
(サイズはかなり大きいです)

サポートされているオペレーティング システムは、
Windows 2000, Windows 98, Windows ME, Windows Server 2003, Windows XP
およびSP6.0aのWindowsNT4.0です。


尚、こちらのサイトが.NET開発のお役に立つと思いますので参考にしてください。
http://www.atmarkit.co.jp/fdotnet/index/all/category.html

.NETのプログラムの実行には、.NET Frameworkと呼ばれる実行環境が必要です。
http://www.atmarkit.co.jp/fdotnet/basics/msdotnet/msdotnet_01.html

これは、WindowsUpdateでもインストール可能だたと思いますが、
こちらからもダウンロードできます。
http://www.microsoft.com/japan/msdn/netframework/downloads/

.NET2003で開発したものなら、「.NET Framework 1.1 再頒布パッケージ」および
「Microsoft .NET Framework Version 1.1 日本語 Language Pack」 を
インストールすることにより、.NET...続きを読む

QCで作成したDLL関数をVBから呼び 引数渡し方法

/**** Cプログラム *****/
int testAP( char* a)
aのポインタにアドレスを返します。

/**** VB プログラム****/
Public Declare Function testAP Lib "test.dll" (ByRef a As String) As Integer


Dim keydata As String * 128

lngRc = testAP(keydata)

上記VBのAPを実行するとアプリケーションエラーになります。
Cプログラムのデバックをすると入口ではaのポインタにはアドレスがセットされていて
、値を設定出来、最後まで正常動作して、VBとのインタフェースで落ちています。
VB6.exeでアプリケーションエラーになっています。

恐らく、VBにはポインタという概念が無いと聞いていてCのAPとの受け渡しに失敗して
そうなのですが、VBでの引き渡し方法が分かりません。
よろしくお願い致します。

Aベストアンサー

>__declspec(dllexport) int testAP(BSTR* cp_KeyData){
>
>→char*からBSTR*に変更しました。

だめです。そんな強引なことをしないでください。
char *でかまいません。
BSTR*にするとメモリ破壊が起きます。
__stdcallはどうしたんですか?
(ごめんなさい、アンダースコア2つですね)

>只、VCのデバックを行うと実行時エラー'49'
>DLLが正しく呼び出せません。が出力される。
>(DLL関数を呼んで処理が終了してVBに戻る所で出力されます。

VBのDeclareステートメントと、Cの処理があっていません。メモリを破壊しているのでしょう。
EXEにして動くのはたまたまでしょう。

QVB.NETのDataGridで、選択行の特定の列の内容を取得したい

タイトルにあるとおり、DataGridを使用している場合、実行時に選択された行の特定の列の内容を取得するにはどのようにすればよいのでしょうか?

DataGridは複雑で、まだよくわかっていません。
よろしくお願いします。

Aベストアンサー

選択している行番号は、dataGrid1.CurrentRowIndexでわかります。
行、列を指定して各セルにアクセスするには、
dataGrid1(行番号,列番号)でいいので
dataGrid1(dataGrid1.CurrentRowIndex,列番号)
で選択されている行の特定の列の内容を取得できます。
註:番号は、0始まり

QVB.NETで、DLLを頂いたんですが・・

VB.NETでプログラムを作成しているのですが、
DLLを頂きました。
このDLLをプログラムで使いたいのですがよくわかりません。
(1)DLLは実行ファイルにおけばいいんですよね?
(2)DLLを参照しろっていう設定は必要ですか?
(3)DLLには、プロパティ、メソッド、イベントとあるみたいなんですが、これらを宣言しないといけないと思うのですがどうやればいいのでしょうか?
(4)下のような資料もらったのですがVBcnvというのが定義されていないとエラーがでるのですがどうやって宣言するのでしょう?
private <任意名> as VBcnv

(5)libファイルも一緒にあったのですが、どういう風に使えばいいのでしょうか?何につかうのでしょうか?
すいません、どなたかお助けを~

Aベストアンサー

> 参考資料にはVB6.0のdll追加方法が書いてありまして、それには、参照設定という画面が書いてあります。

それならCOMですね。

>(1) 

インストーラが用意されていないのであれば、手動でレジストする必要があります。

>(2) 

VS.NETのプロジェクトがCOMを参照する必要があります。

>(3)
必要ありません。
VS.NETのプロジェクトがCOMを参照すれば自動的にラッパークラスが作成されます。
オブジェクトブラウザでプロパティ、メソッド、イベントを確認できます。

>(4)

private <任意名> as new ラッパークラス名

>(5)

謎。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング