1

何らかの理由で、MouseHover および MouseLeave 関数は非常に奇妙な動作をします。私がする必要があるのは、カーソルが「ボタン」の上にあるときにボタンを表示し、カーソルがボタンを離れるときに非表示にすることだけです。どんなに頑張ってもうまくいきませんでした。コントロール オブジェクトが非表示の場合、マウス イベントが機能しないようです。

private void button1_MouseHover(object sender, EventArgs e)
{
   button1.Visible = true;
}

private void button1_MouseLeave(object sender, EventArgs e)
{
    button1.Visible = false;
}
4

4 に答える 4

8

うーん…そんな仕組みです。ボタンのMouseLeaveイベントの処理を続行MouseMoveし、その親を処理します (フォームを想定しています)。

private void Form_MouseMove(object sender, MouseEventArgs e) {
    if (button1.Bounds.Contains(e.Location) && !button1.Visible) {
        button1.Show();
    }
}
于 2011-06-28T22:02:31.163 に答える
2

ボタンPanelを正確に含むようにサイズと位置を合わせた にボタンを配置します。MouseEnter次に、MouseLeaveパネルに引っ掛けます。ボタンの表示/非表示; マウスイベントを取得できるように、パネルを常に表示したままにします。

于 2011-06-28T22:05:45.120 に答える
2

簡潔なコメントが示唆するように、目に見えないオブジェクトは「そこにない」ため、マウスによって認識されません。

于 2011-06-28T22:03:59.667 に答える
1

それが仕組みです。非表示のコントロールはマウス イベントに応答しません。

デザインを見直してみませんか?マウスがスクロールしたときにのみ表示される非表示のコントロールは、「使いにくい」と叫びます。親コンテナーまたはコントロールの上にカーソルを合わせると、いくつかの子コントロールが表示されることは理解できましたが、純粋に運によって見つかるまで非表示の単一のボタンではありませんでした。ボタンを別のコンテナにラップして、コンテナのマウスイベントを処理することはいつでもできます。

于 2011-06-28T22:07:13.073 に答える