2

私のフォームには、その GroupBbox MouseEvents に問題があります。

いくつかの GUI ガジェット (ドッキング、不透明度など) を作成しようとしています。

次に例を示します。

ピキュート

すべての (GUI) オブジェクトをこれら 2 つの関数にリンクしました。

private void MyMouseMove(object sender, MouseEventArgs e)
{
    this.Opacity = 1;
}

private void MyMouseLeave(object sender, EventArgs e)
{
    this.Opacity = 0.5;
}

..イベントがないため、グループパネルを期待してMouseMoveくださいMouseLeave。追加できますか?標準のパネルにもそれらがあります。

その GroupPanels のレイアウト (境界線とテキストを含む) が本当に気に入っています。そのため、GroupBox でその問題を解決できるようになりたいと思っています。

私が作成したガジェットは、カーソルがフォーム内またはフォーム外にある場合にのみトリガーされます。(非アクティブかアクティブかは関係ありません)。MouseMoveと以外に、それをトリガーする別の方法があるかもしれませんMouseLeave

4

1 に答える 1

0

タイマーを使用するのがおそらく最も簡単な解決策です! この「Winform - マウスがユーザー コントロールを離れたかどうかを判断する」という質問にリンクしてくれたLarsTech
に 感謝します。

以下のサンプルを使用して、プロジェクトを続行できます。

public partial class Form1 : Form
{
    private Timer timer1;
    public Form1()
    {
        InitializeComponent();
        this.Opacity = 0.5D;
        timer1 = new Timer();
        timer1.Interval = 200;
        timer1.Tick += timer1_Tick;
        timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (this.DesktopBounds.Contains(Cursor.Position))
            this.Opacity = 1D;
        else
            this.Opacity = 0.5D;
    }
}

クレジット: Hans Passant

于 2013-06-01T11:58:10.820 に答える