2012-01-03 67 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