プロが教えるわが家の防犯対策術!

.NET初心者です。
スプラッシュスクリーンについてお尋ねします。スクリーンを自動で閉じるのではなく、手動で(ボタンのクリックで)閉じるようにしたいのですが、
http://msdn.microsoft.com/ja-jp/library/cc681209 …
http://msdn.microsoft.com/ja-jp/library/system.w …によると
ScreenSprashのShowメソッドでautoCloseをFalseにすれば手動でスクリーンを閉じることが出来ると書いてあるのですが、これはApplicationEvents.vbに書き込めば良いのでしょうか?それともスクリーンにでしょうか?

また、Showメソッドの使い方も良く分かりません。
構文がPublic Sub Show(ByVal autoClose As Boolean)としてあったので、ためしに
Public Sub Show(ByVal autoClose As Boolean)
autoClose = False
End Sub
としてみました。案の定ですが動きません。

もう一つ、Closeメソッドの構文を見ると
Public Sub Close ( _
fadeoutDuration As TimeSpan _
)
と、時間制がとられているのですが、これをタイムスパンではなくボタンクリックでスクリーンを終了するようにしたいのですが、このメソッドで出来るのでしょうか?

スプラッシュスクリーンを使用することが先方の要望のため代替作戦が利かず、かつ調べても使用例が出てこなくて困ってます。あってもC言語でした。

A 回答 (4件)

メインのFormのLoadイベントで行っても同じことだと思いますよ


普通は Applicationクラスってあんまり弄りませんからね
    • good
    • 0
この回答へのお礼

わかりました、ありがとうございました!

お礼日時:2011/12/02 12:00

プロジェクトのプロパティのアプリケーションタブの『スプラッシュスクリーン』に SplashScreen1を設定しているのであれば 『(なし)』に変更しましょう



アプリで自動で生成するスプラッシュと Startupイベントで表示しようとするスプラッシュがぶつかってしまってエラーになっているようですよ
    • good
    • 0

どの段階で例外がスローされるのでしょう?



MyApplication_Startupの中にブレークポイントを設置してF11キーでステップ実行して原因の究明をしていただけませんか

当方では InvalidOperationException は起きておりません
また 確認は VB2005で行っております

投稿する際には開発環境の状況 VS2010やVB2008などの情報もあるいいと思いますよ

この回答への補足

開発環境はVB2010です。
ステップ実行での原因究明のしかたがいまいち良く分かっていないのでredfox63さんが求めているものがこれなのかよくわかりませんが、(もし違っていたら実行結果の読み方を教えてください)
splash.ShowDialog()
のところでエラーが起きている様子です。

補足日時:2011/12/01 17:03
    • good
    • 0
この回答へのお礼

先ほど気づいたのですが、プロジェクトのプロパティで、「アプリケーションイベントの表示」横にある「スプラッシュスクリーン」でSprashScreen1を選択していたため、エラーが生じていたようです。スクリーンが二重起動することになってしまったために生じたのではないか?との見解ですが・・・

スプラッシュスクリーンを「なし」に設定するとエラーは生じなくなりました。
しかしきちんと起動されて思ったのですが、redfox63さんが教えてくれた方法やコードと、スタートアップフォームのLoadイベントでShowDialogメソッドを使った場合の動きが同じように思えるのです。
これらは同一のものなのでしょうか?

お礼日時:2011/12/01 17:42

お示しのURLの内容は WPFのものですが 大丈夫でしょうか?



.NETのWindowsFormアプリですと別のアプローチになりますよ

WPFのSplushScreenクラスですとイメージファイルを指定して構築となっているのでボタンの追加などが出来ないみたいですよ


WindowsFormの場合新規の項目の追加で『スプラッシュスクリーン』を追加します
このフォーム上にボタンを追加して Clickイベントに
DialogResult = DialogResult.OK
Me.Close()
を記述します

プロジェクト > 『プロジェクト名』のプロパティ > アプリケーションタブ の下部の『アプリケーションイベントの表示』をクリック

(全般)を(MyApplicationのイベント)に変更
Startupを選択

dim splash as SplashScreen1 = Global.VBEX002.SplushScreen1
slpush.ShowDialog()
と記述

SplashScreen1 = Global.VBEX002.SplushScreen1
の SplashScreen1は スプラッシュスクリーンの追加を行ったときのクラス名です
VBEX002はアプリケーションのプロジェクト名です
ご自身の環境に合わせて修正してください
    • good
    • 0
この回答へのお礼

うわ、すみません。WPF用だと気づいていませんでした。
教えてもらった方法を試してみたのですが、InvalidOperationException はハンドルされませんでした
というエラーが出てしまいます。
ヘルプを見たところ、Invoke メソッドというのを使うようですが、それでいいのでしょうか?

お礼日時:2011/12/01 15:34

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