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

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

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

Re[1]: PictureBox の MouseLeave イベント


(過去ログ 78 を表示中)

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

■46414 / inTopicNo.1)  PictureBox の MouseLeave イベント
  
□投稿者/ はま〜 (1回)-(2010/02/02(Tue) 14:10:49)

分類:[.NET 全般] 

はじめまして

Visual C# 2008 (.Net Framework 3.5) を使っています。

PictureBox のイベントに MouseLeave がありますが、マウスのボタンを押した状態で
コントロールの外にマウスカーソルが移動した場合ではマウスのボタンが解放されるまで
このイベントが発生しません。

マウスのボタンが押されたままの状態でも、コントロールの外にマウスカーソルが移動すれば
MouseLeave が発生するようにするにはどのようにすればいいのでしょうか?

引用返信 編集キー/
■46416 / inTopicNo.2)  Re[1]: PictureBox の MouseLeave イベント
□投稿者/ 魔界の仮面弁士 (1465回)-(2010/02/02(Tue) 14:41:13)
No46414 (はま〜 さん) に返信
> マウスのボタンが押されたままの状態でも、コントロールの外にマウスカーソルが移動すれば
> MouseLeave が発生するようにするにはどのようにすればいいのでしょうか?

これでどうでしょう。

class PictureBoxSample : PictureBox
{
    [DllImport("user32")]
    static extern bool ReleaseCapture();

     protected override void OnMouseMove(MouseEventArgs e)
    {
        base.OnMouseMove(e);
        if (!this.ClientRectangle.Contains(e.Location))
        {
            //base.OnMouseLeave(e);
            ReleaseCapture();
        }
    }
}

引用返信 編集キー/
■46417 / inTopicNo.3)  Re[1]: PictureBox の MouseLeave イベント
□投稿者/ .SHO (1184回)-(2010/02/02(Tue) 14:43:07)
> マウスのボタンが押されたままの状態でも、コントロールの外にマウスカーソルが移動すれば
> MouseLeave が発生するようにするにはどのようにすればいいのでしょうか?

無理です。
つか、発生しない方が便利なはずです。
使用者は既にボタンの上でマウスを押してるのですから。

どうしても検知したいのならば、マウスの移動を拾って座標で判断してください。

引用返信 編集キー/
■46418 / inTopicNo.4)  Re[2]: PictureBox の MouseLeave イベント
□投稿者/ .SHO (1185回)-(2010/02/02(Tue) 14:46:50)
かぶった。。
しかも、ソース付きで・・・
失礼しました。

引用返信 編集キー/
■46428 / inTopicNo.5)  Re[1]: PictureBox の MouseLeave イベント
□投稿者/ 渋木宏明(ひどり) (1272回)-(2010/02/02(Tue) 20:20:06)
渋木宏明(ひどり) さんの Web サイト
2010/02/02(Tue) 20:20:47 編集(投稿者)

なんとなく、ドラッグ&ドロップを自前で実装しようとしているよに見えるんですが…

であるなら、自分でマウス系のイベントをゴチョゴチョするんでなく、素直に .NET Framework が提供するドラッグ&ドロップの仕組みを使って実装した方がいーと思います。

目的が違うんなら、流してください。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -