Vb.net 如何创建焦点丢失的淡出形式&;得到事件

Vb.net 如何创建焦点丢失的淡出形式&;得到事件,vb.net,winforms,focus,opacity,Vb.net,Winforms,Focus,Opacity,我正在用vb.net做一个项目 当我点击“打开”按钮时,我打开了没有控制框的表单(最小化、最大化等)。将borderStyle设置为FixedToolWindow 我想更改获得焦点和失去焦点事件上窗体的不透明度。 我也使用了激活和停用事件,但不起作用 Private Sub form_Deactivate(ByVal sender As Object, ByVal e As System.EventArgs)HandlesMyBase.Deactivate Me.Opacity

我正在用vb.net做一个项目 当我点击“打开”按钮时,我打开了没有控制框的表单(最小化、最大化等)。将borderStyle设置为FixedToolWindow 我想更改获得焦点和失去焦点事件上窗体的不透明度。 我也使用了激活和停用事件,但不起作用

   Private Sub form_Deactivate(ByVal sender As Object, ByVal e As System.EventArgs)HandlesMyBase.Deactivate
     Me.Opacity =0
      End Sub

   Private Sub form_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles  MyBase.Activated
        Me.Opacity = 1
    End Sub

为此,您需要使用System.Windows.Forms.Timer。实现非常简单:

  • 有两个变量叫做_fromopatity和_tocapacity,常数OpacityStep=0.05
  • 在窗体上激活或取消激活设置_fromOpacity和_toCapacity,并启动计时器以淡入/淡出
  • 在计时器已用事件处理程序中,递增或递减OpacityStep(取决于从/到),直到达到所需值
有关如何执行此操作的完整示例,请参见此


致以最诚挚的问候,

请在第二行中尝试0.01。您使用了0,它将隐藏您的表单


因为当你点击表单区域时,激活的表单不会运行。

Andrew Burnett Thom。是的,我知道这很好。但我想把它放在没有响应的事件上。啊,好吧,我误解了你的问题。我以为你在问如何使窗体褪色,但你在问为什么不触发停用和激活事件。我可以建议将问题改为“停用、激活、VB.NET中未触发的事件”或类似的问题吗?致以最诚挚的问候,您知道做这件事的诀窍吗?如果焦点在窗体上,则其不透明度为1;如果焦点在窗体外,则要将不透明度设置为0,请尝试鼠标输入,鼠标离开?我将四处搜索,试图找出为什么激活etc不触发@Dr.Andrew Burnett Thompson抱歉,但鼠标进入和离开事件也不起作用。您必须描述不起作用的部分。您发布的代码是“ok”,所以问题出在其他地方。顺便说一句,不透明度应该是1,而不是100。这是一个双精度。你是如何打开第二个表单的,你能发布代码吗?@Kerry H使用form.showDialog()方法。@LarsTech抱歉我错了。我编辑了这个表单抱歉@Moctava Farzán但它不起作用。我不知道为什么会发生这种情况。将表单的最顶端设置为true,然后重试。我希望这能奏效:-)