tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルshowdialog画面より最前面
記事No9369
投稿日: 2009/09/09(Wed) 10:04
投稿者VB
VB2008
WinXP

下記のプログラムのようにスレッドで表示したForm2画面の上に
フォルダ選択画面を表示させたいのですが。
どのようにすれば、フォルダ選択画面が最前面にもっていけるでしょうか?
アドバイス宜しくお願い致します。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        On Error Resume Next
        Dim th As New Threading.Thread(AddressOf openform)
        th.Start()
        Dim oShell As Object
        Dim oFolder As Object
        oShell = CreateObject("Shell.Application")
        oFolder = oShell.BrowseForFolder(0, "フォルダを選択してください。", 1, "A:\")
        If Not (oFolder Is Nothing) Then
            MsgBox(oFolder.Items.Item.Path())
        Else
            MsgBox("キャンセル")
        End If
    End Sub

    Private Sub openform()
        On Error Resume Next
        Form2.ShowDialog()
    End Sub

[ツリー表示へ]
タイトルRe: showdialog画面より最前面
記事No9371
投稿日: 2009/09/09(Wed) 10:48
投稿者Hongliang
そもそも
> スレッドで表示したForm2画面
が何故必要なのでしょうか?
GUI は単一のスレッドで管理するのが WinForms の設計ですし、それでおよそ問題ないはずですが。

[ツリー表示へ]
タイトルRe^2: showdialog画面より最前面
記事No9373
投稿日: 2009/09/09(Wed) 12:47
投稿者VB
> そもそも
> > スレッドで表示したForm2画面
> が何故必要なのでしょうか?
> GUI は単一のスレッドで管理するのが WinForms の設計ですし、それでおよそ問題ないはずですが。

form1のボタンをクリックし、Click関数内で
Form2を表示させるに続いて他の処理を行う際に、
Form2のコントロールに対しても処理を行うと
Form2の表示は、Click関数の処理が終わるまで真っ白の状態になってしまうためです。

[ツリー表示へ]
タイトルRe^3: showdialog画面より最前面
記事No9376
投稿日: 2009/09/09(Wed) 15:01
投稿者Hongliang
> form1のボタンをクリックし、Click関数内で
> Form2を表示させるに続いて他の処理を行う際に、
> Form2のコントロールに対しても処理を行うと
> Form2の表示は、Click関数の処理が終わるまで真っ白の状態になってしまうためです。

「他の処理」だけ別スレッドで行うようにすればいいんでは?
「他の処理」から各コントロールへのアクセスは Control.Invoke を通す必要がありますけど。

[ツリー表示へ]
タイトルRe^4: showdialog画面より最前面
記事No9380
投稿日: 2009/09/09(Wed) 15:57
投稿者VB
> 「他の処理」だけ別スレッドで行うようにすればいいんでは?
> 「他の処理」から各コントロールへのアクセスは Control.Invoke を通す必要がありますけど。

他の処理は、フォルダ参照画面でディレクトリを選択してからのことなので。
それをスレッドにしてしまうと都合が悪いです。
話は、戻りますが。
単純に別スレッドで立ち上げた(showdialog()で)フォーム
フォルダ参照画面を最前面に表示させたいです・・・。
何か方法は、ないでしょうか?

[ツリー表示へ]
タイトルRe^5: showdialog画面より最前面
記事No9382
投稿日: 2009/09/09(Wed) 18:33
投稿者VB
自己解決しました。
お騒がせしました。

[ツリー表示へ]