2012-01-03 70 views
1

我正在做项目在vb.net 当我点击按钮打开时,我打开窗体没有控制框(最小化,最大化等).set borderStyle to 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 
+0

你必须描述不工作的部分。你发布的代码是“ok”,所以问题在其他地方。顺便说一句,不透明度应该是1,而不是100.它是双倍的。 – LarsTech 2012-01-03 14:53:18

+0

你打开第二个表单,你可以发布代码吗? – 2012-01-04 02:04:13

+0

@Kerry H通过使用form.showDialog()方法。 – 2012-01-04 05:11:27

回答

1

要做到这一点,你需要使用一个System.Windows.Forms.Timer。实现是很简单的:

  • 有两个变量称为_fromOpactity和_toOpacity,和恒定OpacityStep = 0.05
  • 表格激活或关闭设置_fromOpacity和_toOpacity同时开始计时,以淡入/淡出。
  • 在定时器Elapsed事件处理程序中,递增或递减OpacityStep(取决于从/到),直到达到所需的值。

有关如何操作的完整示例,请参阅此​​。

最好的问候,

+0

Andrew Burnett-Thom。我知道它很好,但我希望它得到和失去焦点哪个事件没有响应。 – 2012-01-03 13:47:09

+0

好的,我误解了你的问题。我以为你在问如何淡化表单,但是你问为什么“停用”和“激活”事件不会触发。我是否可以建议将问题改为“停用,激活,事件不在VB.NET中触发”或类似的问题?最好的问候, – 2012-01-03 14:14:54

+0

你知道这样做的任何技巧。如果焦点在表单上,​​那么它的不透明度是1,如果焦点在外面,那么设置不透明度为0 – 2012-01-04 05:28:37

1

尝试在你的第二行0.01。你用它会隐藏你的表单。

因为当你点击窗体区域时,form_Actived不会运行。

+0

抱歉@MoctavaFarzán,但它不工作。我不知道为什么发生这种情况 – 2012-01-04 08:51:41

+0

好吧。将** TopMost **设置为** true **,然后重试。我希望这可以工作:-) – 2012-01-04 09:34:26