質問

C#には、次のことがあります。

  • a UserControl 含む PictureBox そして見えない FlowPanel.

私が達成したいこと:

  • いつ UserControl ホバリングされています(MouseHover)、目に見えないFlowPanel に設定されます visible = true. 。マウスが離れるときUserControl また FlowPanel, 、FlowPanel 設定する必要があります visible = false.

使用 MouseLeave の上 UserControl マウスが入るとこのイベントがトリガーされるため、仕事はしません FlowPanel. 。隠します FlowPanel マウスが去るとき FlowPanel それをしますが、バギーです(時には MouseLeave トリガーされますが、時にはそうではありません)。

これを修正するための最良の方法は何ですか?

役に立ちましたか?

解決

私は自分のフォームの1つで似たようなことをしました

最初のイベント内でif(contorl.opacity = 1.0)を実行します

private void Form1_MouseLeave(object sender, EventArgs e)
{
   if (this.ClientRectangle.Contains(this.PointToClient(Cursor.Position)))
   {
    this.Opacity = 1.0;
   }
   else
   {
      int loopctr = 0;

      for (loopctr = 100; loopctr >= 5; loopctr -= 10)
      {
        this.Opacity = loopctr / 99.0;
        this.Refresh();
        Thread.Sleep(100);
      }
   }
}

他のヒント

場合の場合 FlowPanel.MouseLeave トリガーされていません、そうではありません UserControl.MouseLeave 引き金になった?両方のイベントに隠れると、トリックができると思います。

これは一般的なUIの問題です。マウスイベントがサンプルとして出てくるため、一部のピクセルの位置が見逃され、コントロールがマウスアップイベントを取得できない可能性があります。

マウスホーバーがコントロール内で検出され、通常の間隔(342msなど)のカーソルの投票が検出された場合、それほど良くない方法は、何らかの形のタイマーをセットアップすることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top