DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォーカスのないWindowの表示

  • 題名: フォーカスのないWindowの表示
  • 著者: patel
  • 日時: 2005/01/24 13:11:17
  • ID: 8658
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[XP VB.NET .NET Freamework 1.1 ]
分類:[.NET]

patelと申します。

新しいFormを表示する際に、
一番最初に表示するときのみフォーカスの移らないFormを表示したいのです。
例をいいますと、Windows Messengerで別ユーザがサインインした際、
画面右下に表示されるようなFormです。

そのFormの表示後に、Clickなどでフォーカスを移動した場合には
きちんとActiveになるようにしたいのですが、
そのようなFormを作成することはできますでしょうか?

ちなみに表示された後に一瞬フォーカスを取得しすぐに別なFormに
フォーカスを移動させることはできたのですが、
それだと一瞬別Formがちらついてしまいます。

御教授のほどよろしくお願いします。
この記事は(投稿者)削除されました
じゃんぬねっと です。

> ちなみに表示された後に一瞬フォーカスを取得しすぐに別なFormに
> フォーカスを移動させることはできたのですが、
> それだと一瞬別Formがちらついてしまいます。

TopMost を使えばチラツキません。

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    Dim hForm1 As New Form1()

    Me.TopMost = True
    hForm1.Show()
    Me.TopMost = False
End Sub
■No8661に返信(じゃんぬねっとさんの記事)
> 例えば、オーナーフォームとして利用すればチラツキません。
> これでもチラツクようなら、フラグなどで描画を無効にしてください。
>
> Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
> Dim hForm1 As New Form1()
>
> Me.Owner = hForm1
> hForm1.Show()
> Me.Activate()
> Me.Owner = Nothing
> End Sub
上記ロジックにて試しましたが、以前に比べればちらつきが減りましたが
まだちらつきます。
また、タスクバーへの表示順が変わってしまいます。
(Form1からForm2を表示する際にタスクバーに
Form2 Form1という順番で表示されてしまうようになってしまいました。)

> これでもチラツクようなら、フラグなどで描画を無効にしてください。
これは、どの部分を無効にすればよいのでしょうか?
じゃんぬねっと です。

■No8667に返信(patelさんの記事)
> まだちらつきます。

もう 1 度先の投稿を見てください。

# すいません、投稿が スレッドセーフ になっていなかったようです (w
# 2 度手間をかけさせて、申し訳ないです。m(_ _)m
■No8666に返信(じゃんぬねっとさんの記事)
> TopMost を使えばチラツキません。
>
> Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
> Dim hForm1 As New Form1()
>
> Me.TopMost = True
> hForm1.Show()
> Me.TopMost = False
> End Sub

先程のオーナーフォームと同様ちらつきはあります。
(タスクバーの順番は正しくなりました。[Form1 Form2])

DOBON.NET | プログラミング道 | プログラミング掲示板