C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: マウスでフォームサイズを変更したときのイベントについて


(過去ログ 100 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■60076 / inTopicNo.1)  マウスでフォームサイズを変更したときのイベントについて
  
□投稿者/ BNT (1回)-(2011/06/19(Sun) 02:18:34)

分類:[VB.NET/VB2005 以降] 

使用言語 VB2008

FormBorderStyleをSizableにしたWindowsフォームで、ユーザーがフォームのサイズをマウスで変更したときに
フォームのSizeChangedイベントで処理を行っているのですが、SizeChangedイベントはユーザーがフォームの端を
マウスでつまんでフォームのサイズを変更している間にも発生するので、サイズ変更がスムーズでないように見えます。

そこで質問なのですが、ユーザーがフォームの端をマウスでつまんでフォームのサイズを変更し、マウスボタンを
離したタイミングで、上記フォームのSizeChangedイベントの処理を行えればいいと思うのですが、
どのイベントを利用すればよいでしょうか?
ご回答の程、よろしくお願い申し上げます。
引用返信 編集キー/
■60077 / inTopicNo.2)  Re[1]: マウスでフォームサイズを変更したときのイベントについて
□投稿者/ 魔界の仮面弁士 (2227回)-(2011/06/19(Sun) 03:24:02)
No60076 (BNT さん) に返信
> フォームのSizeChangedイベントで処理を行っているのですが、
何の処理を行っているのでしょう? それが分かれば、何か代案を提示できるかもしれません。

たとえば、その処理をワーカースレッドで作業させるとか、あるいは
サイズ変更以外のイベント(Timer.Tick 等で実施するとか)。


> そこで質問なのですが、ユーザーがフォームの端をマウスでつまんでフォームのサイズを変更し、マウスボタンを
> 離したタイミングで、上記フォームのSizeChangedイベントの処理を行えればいいと思うのですが、
> どのイベントを利用すればよいでしょうか?
話を聞く限りでは ResizeEnd イベントが該当しそうに思えますが、それだと何か都合が悪いのでしょうか?


もし、ResizeBegin / Resize / ResizeEnd ではなく、SizeChanged でなければならない理由があるのなら、
SizeChanged を Application.Idle イベントと併用すれば、もしかしたらそれっぽくなるかもしれません。

Public Class Form1

    Private Resizing As Boolean

    Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
        If Not Resizing Then
            Resizing = True
            AddHandler Application.Idle, AddressOf Test
            ListBox1.Items.Insert(0, "サイズ変更開始" & Now.ToString("HH:mm:ss.ffff"))
        End If
    End Sub

    Private Sub Test(ByVal sender As Object, ByVal e As EventArgs)
        RemoveHandler Application.Idle, AddressOf Test
        Resizing = False

        ListBox1.Items.Insert(0, "サイズ変更終わり" & Now.ToString("HH:mm:ss.ffff"))
    End Sub

End Class

引用返信 編集キー/
■60080 / inTopicNo.3)  Re[2]: マウスでフォームサイズを変更したときのイベントについて
□投稿者/ BNT (2回)-(2011/06/19(Sun) 11:30:36)
魔界の仮面弁士様、ご丁寧なご回答ありがとうございました。
フォームにResizeEndというイベントがあることを知りませんでした。
このイベントがまさに欲しかったイベントでした。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -